Функцията 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

QUERY:

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