Функция IS NULL не работает

Я протестировал функцию IS NULL, предоставленную Google BigQuery, но, похоже, она не дает правильных результатов.

ОБРАЗЦЫ ДАННЫХ:

id   age   gender   password
1,   11,    NULL,     NULL
1,   11,   "NULL",   "NULL"
1,   11,   "null",   "null"
1,     ,    NULL,     NULL

ЗАПРОС:

SELECT id, age, gender, password, id IS NULL, age IS NULL, gender IS NULL, password IS NULL 
FROM privatedata.testnull

ВЫВОД:

Row id  age gender  password f0_    f1_      f2_     f3_     
1   1   11   NULL    NULL   false   false   false   false    
2   1   11   NULL    NULL   false   false   false   false    
3   1   11   null    null   false   false   false   false    
4   1   0    NULL    NULL   false   false   false   false    

Но этот SQL работает:

SELECT NULL IS NULL, COUNT(*) FROM privatedata:testnull

Так что я не уверен, работает ли IS NULL или нет. Также меня смущает то, как я буду вставлять нулевые данные в строковом формате и числовом формате.


person Ben Kim    schedule 13.07.2012    source источник


Ответы (1)


ИЗМЕНЕННЫЙ ОТВЕТ:

Для очень старых таблиц была проблема, из-за которой мы не сохраняли границу между пустым полем и полем NULL. Эта проблема должна быть исправлена ​​для любой таблицы, созданной после марта 2013 года.

СТАРЫЙ ОТВЕТ:

Я считаю, что проблема в том, что для строковых полей мы интерпретируем NULL как строку «NULL». Что, если вы просто используете , , для строковых значений?

Удивительно то, что возраст в строке 4 должен отображаться как нуль. Похоже, что-то не так с функцией IS_NULL. Я зарегистрировал внутреннюю ошибку. Однако функция IS_EXPLICITLY_DEFINED() должна возвращать то, что вы ожидаете (например, IS_EXPLICITLY_DEFINED для возраста в строке 4 вернет fasle).

person Jordan Tigani    schedule 13.07.2012
comment
Если я помещаю пустые значения (, , , ) для строковых значений и запускаю тот же запрос, я все равно получаю false для вывода IS NULL - person Ben Kim; 16.07.2012
comment
Проблема с нулевым значением оказалась известной внутренней ошибкой. Сейчас вам следует использовать IS_EXPLICITLY_DEFINED. - person Jordan Tigani; 16.07.2012