如果我启动此查询:
with a as (
select cast(null as array<string>) as x union all select ['str1','str2'] as x)
select * from a where x is null
我得到了这个结果:
这是我预期的结果。
但是,如果我首先启动此查询:
select cast(null as array<string>) as x union all select ['str1', 'str2'] as x
其结果我保存在数据集“tmp”中的表“a”中,然后我启动此查询:
select * from `tmp.a` where x is null
我得到了这个结果:
我期望结果与第一个相同。为什么这两个结果有区别?
答案 0 :(得分:5)
解决方法:要在两个案例中获得相同的结果,您可以在where子句中使用函数ARRAY_LENGTH(x)=0
。