将有效负载中的空字符串类型转换为雪花中的 int

时间:2021-05-02 19:06:34

标签: snowflake-cloud-data-platform

我正在尝试从 JSON 有效负载中读取字符串格式的数字 id 并将其转换为 INT。 我无法将 id 转换为 int 如果它是一个空字符串

payload column looks like:
'data':{
   'id': ''

我试过的查询:

select payload:data:id:: from table

错误:

<块引用>

无法识别数值 ''

1 个答案:

答案 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;