在GBQ SQL中如何设置WHERE筛选器获取Walmart的cancelled_datetime空值记录?
解决TIMESTAMP列空值筛选报错问题
你遇到的Could not cast literal "" to type TIMESTAMP错误,是因为cancelled_datetime是TIMESTAMP类型,不能直接和空字符串""做比较——数据库会尝试把空字符串转换为TIMESTAMP类型,但这是无效的转换操作,所以抛出错误。
要筛选供应商Walmart且cancelled_datetime无数据的记录,正确的写法是用IS NULL判断空值(TIMESTAMP类型的空值标准表示是NULL,而非空字符串):
WHERE supplier_code = 'Walmart' AND cancelled_datetime IS NULL
如果你的数据集里,cancelled_datetime无数据时确实存储的是空字符串(这种情况不符合TIMESTAMP类型的规范,但也存在例外场景),可以先将列转换为字符串类型再判断:
WHERE supplier_code = 'Walmart' AND CAST(cancelled_datetime AS VARCHAR) = ''
优先推荐第一种写法,因为这符合SQL对TIMESTAMP类型空值的标准处理方式。
内容的提问来源于stack exchange,提问作者Yusuf Aboobaker
相关产品推荐
相关产品推荐

