我发现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
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)
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |