我正在尝试从 JSON 有效负载中读取字符串格式的数字 id 并将其转换为 INT。 我无法将 id 转换为 int 如果它是一个空字符串:
payload column looks like:
'data':{
'id': ''
我试过的查询:
select payload:data:id:: from table
错误:
<块引用>无法识别数值 ''
答案 0 :(得分:1)
可以通过NULLIF
处理(如果唯一不正确的值是空字符串):
CREATE OR REPLACE TABLE tab AS
SELECT PARSE_JSON('{"data":{"id":""}}') AS payload
UNION ALL
SELECT PARSE_JSON('{"data":{"id":"2"}}');
查询:
SELECT NULLIF(payload:data:id, '')::INT AS id
FROM tab;
-- id
-- NULL
-- 2
或者使用 TRY_CAST
:
SELECT TRY_CAST(payload:data:id::STRING AS INT) AS id
FROM tab;