如何在Big Query中使用不忽略Null的where语句

Ria*_*lal 3 google-bigquery

我发现Google Big Query中的WHERE语句忽略了NULLS,我有点惊讶.有谁知道更好的方法吗?

我有以下数据集:

Name     Score
Allan     20           
Brian     NULL
Clare     30
Run Code Online (Sandbox Code Playgroud)

假设我想选择分数不等于20的所有记录.如果我在Big Query中使用以下代码

SELECT * FROM [....] 

where
    Score <> 20
Run Code Online (Sandbox Code Playgroud)

结果如下:

Name  Score
Clare   30
Run Code Online (Sandbox Code Playgroud)

问题是Brian的NULL记录也不等于20,因此应该在我的结果中.

除了特别检查NULLS之外还有更好的方法吗?

谢谢Ria

oul*_*enz 7

SQL(以及类似SQL的BigQuery)具有三价逻辑.归结为,语句不能只是TRUE或FALSE,它们也可以是NULL.在这种情况下,语句NULL <> 20既不是TRUE也不是FALSE,它本身就是NULL.将NULL值视为未知可能会有所帮助.由于我们不知道Brian的年龄,我们不知道它是否等于20.但是查询只返回where子句求值为TRUE的行,因此排除了带有Brian的行.

如果要包含NULL值,则必须显式写入

where (Score <> 20 or Score is null)
Run Code Online (Sandbox Code Playgroud)