BigQuery SQL查询:获取Operational_End_Date为NULL或指定日期后的数据
BigQuery SQL查询修正方案
你的SQL存在两个语法和逻辑错误:
- 缺少
WHERE关键字,FROM子句后直接用AND属于语法错误 IN运算符无法混合NULL判断和范围条件,而且SQL中不能用IN (NULL)来匹配NULL值(因为NULL和任何值比较结果都是UNKNOWN)
正确写法1(最直观的方式)
用OR分开两个判断条件,NULL必须用IS NULL来检测:
SELECT * FROM data WHERE Operational_End_Date IS NULL OR Operational_End_Date > '2022-08-01'
正确写法2(简化条件的方式)
通过COALESCE把NULL值替换成一个远大于目标日期的固定值,这样可以用单一条件完成筛选:
SELECT * FROM data WHERE COALESCE(Operational_End_Date, '9999-12-31') > '2022-08-01'
这里把NULL替换成9999-12-31(BigQuery支持的最大日期之一),确保它会满足大于2022-08-01的条件,从而同时包含NULL和符合范围的数据。
内容的提问来源于stack exchange,提问作者Matthew Justin
相关产品推荐
相关产品推荐

