如何解决Snowflake ifnull和parse_json结合使用时无法正常工作
这是我的查询
从表名中选择object_construct('id',id,alpha,PARSE_JSON(null)) 限制1
输出为{“ id”:1,“ alpha”:null}
但是当我将 parse_json 与 ifnull 结合使用时,它会返回空对象 {} 不能正常工作
选择object_construct('id',IFNULL(id,(PARSE_JSON(null)),alpha, 表名限制1中的IFNULL(alpha,(PARSE_JSON(null)))
以上返回{}
但是我需要使用null值{“ id”:1,“ alpha”:null}
合并无法解决任何问题?
[问题已更新]
感谢Felipe Hoffa。
在您的答案中,最后一部分按预期方式工作。
SELECT OBJECT_CONSTRUCT('id',id,'alpha',IFNULL(alpha,PARSE_JSON('null')))
FROM (SELECT 1 id,null alpha)
# {"alpha": null,"id": 1}
但是当我尝试以下操作时,它不起作用
SELECT OBJECT_CONSTRUCT(
'id',PARSE_JSON('null'))
)
FROM (SELECT id,alpha from tableName)
#{ "id" :1 }
在使用FROM查询时有效: FROM(SELECT 1 id,空alpha)
在使用我的FROM查询时不起作用: FROM(SELECT ID,来自tableName的字母)
希望已清除。
预先感谢
解决方法
这里的问题是问题的第一条陈述不正确。编码PARSE_JSON(null)
时,null
不表示:
SELECT OBJECT_CONSTRUCT('id',id,alpha,PARSE_JSON(null))
FROM (SELECT 1 id,null alpha)
# {"id": 1}
要解决此问题,您必须改为PARSE_JSON('null')
-并引用变量名称:
SELECT OBJECT_CONSTRUCT('id','alpha',PARSE_JSON('null'))
FROM (SELECT 1 id,null alpha)
# {"alpha": null,"id": 1}
那看起来更好。解决此问题后,现在IF_NULL
可以按需工作了:
SELECT OBJECT_CONSTRUCT('id',IFNULL(alpha,PARSE_JSON('null')))
FROM (SELECT 1 id,"id": 1}
,
我需要有空值 { "id" : 1,"alpha" : null }
您可以使用 OBJECT_CONSTRUCT_KEEP_NULL 而不是 OBJECT_CONSTRUCT。
SELECT OBJECT_CONSTRUCT_KEEP_NULL('id',alpha) from tableName;
SELECT OBJECT_CONSTRUCT_KEEP_NULL(*) from (SELECT id,alpha from tableName) sub;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。