【问题标题】:IS NULL function not workingIS NULL 函数不起作用
【发布时间】:2012-07-13 08:03:58
【问题描述】:

我已经测试了 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 是否正常工作。我也对如何以字符串格式和数字格式插入空数据感到困惑。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    编辑答案:

    对于非常旧的表,存在一个问题,即我们没有保留空字段和 NULL 字段之间的值。对于 2013 年 3 月之后创建的任何表,都应该解决此问题。

    旧答案:

    我认为问题在于对于字符串字段,我们将 NULL 解释为字符串“NULL”。如果您只使用, , 作为字符串值怎么办?

    令人惊讶的是,第 4 行中的年龄应该显示为 null。看起来 IS_NULL 函数有问题。我已经在内部提交了一个错误。但是,IS_EXPLICITLY_DEFINED() 函数应该返回您期望的结果(例如,第 4 行中年龄的 IS_EXPLICITLY_DEFINED 将返回 fasle)。

    【讨论】:

    • 如果我为字符串值输入空值(", , , ") 并运行相同的查询,对于 IS NULL 输出,我仍然会得到“false”
    • 空问题原来是一个已知的内部错误。你现在应该使用 IS_EXPLICITLY_DEFINED。
    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    相关资源
    最近更新 更多