0

Google BigQueryが提供する関数をテストしましIS NULLたが、正しい結果が得られないようです。

サンプルデータ:

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動作しているかどうかはわかりません。また、文字列形式と数値形式でnullデータを挿入する方法と混同しています。

4

1 に答える 1

1

編集された答え:

非常に古いテーブルの場合、空のフィールドとNULLフィールドの間を保持しないという問題がありました。この問題は、2013年3月以降に作成されたすべてのテーブルで修正されるはずです。

古い答え:

問題は、文字列フィールドの場合、NULLを文字列「NULL」として解釈していることだと思います。, ,文字列値に使用する場合はどうなりますか?

驚くべきことは、4行目の年齢がnullとして表示されるはずだということです。IS_NULL関数に問題があるようです。社内でバグを報告しました。ただし、IS_EXPLICITLY_DEFINED()関数は、期待どおりの結果を返す必要があります(たとえば、行4の年齢のIS_EXPLICITLY_DEFINEDは、fasleを返します)。

于 2012-07-13T16:53:11.807 に答える