当您尝试将 JSON 类型与其他类型进行比较时,您会得到
SELECT JSON "null" != 'null'
对于参数类型:JSON、STRING,运算符 != 没有匹配的签名。支持的签名:ANY != ANY at [1:8]
解决此问题的简单方法是将 JSON 数据转换为 BigQuery String 并将其与其他数据进行比较。
WITH json_data AS (
SELECT CAST(null AS JSON) AS col1 UNION ALL
SELECT JSON 'null' UNION ALL
SELECT JSON '{"a":null}' UNION ALL
SELECT JSON '{"b":"hello"}'
)
SELECT *, FORMAT('%t', col1) format, JSON_TYPE(col1) json_type,
FROM json_data;
FORMAT()
and JSON_TYPE()函数转换JSON 'null'
分别为 BigQuery 字符串。利用这些输出之一,您可以检索非空值 JSON 数据类型列值
SELECT * FROM json_data WHERE JSON_TYPE(col1) != 'null';
or,
SELECT * FROM json_data WHERE LOWER(FORMAT('%t', col1)) != 'null';
Note FORMAT() turns null
into NULL
string.