我有一个嵌套的json字段,如下所示:
trend
{"trend":0,"abs":0,"per":null}
我想查询并获取里面的值,所以我有一个case语句来获取值:
select
(CASE WHEN trend like '%"trend"%' THEN json_extract_path_text(trend, 'trend') ELSE NULL END)::SMALLINT,
(CASE WHEN trend like '%"abs"%' THEN json_extract_path_text(trend, 'abs') ELSE NULL END)::INTEGER,
(CASE WHEN trend like '%"per"%' THEN json_extract_path_text(trend, 'per') ELSE NULL END)::DOUBLE PRECISION
from staging_raw.table
问题出在最后一个字段中,' per'因为它已经为null我在Redshift中收到此错误消息:
我尝试使用
条款(CASE WHEN trend like '%"per"%' and json_extract_path_text(trend, 'per') is not NULL THEN json_extract_path_text(trend, 'per') ELSE NULL END)::DOUBLE PRECISION
但我仍然有同样的错误。如果源是这样的话,如何解决这个问题呢?
谢谢!
答案 0 :(得分:1)
解决!
and json_extract_path_text(trend, 'p(CASE WHEN trend like '%"per"%' and json_extract_path_text(trend, 'per') !='' THEN json_extract_path_text(trend, 'per') ELSE NULL END)::DOUBLE PRECISION
er') !=''
这最终起作用了,因为json_extract_path_text(趋势,' per')不是NULL值而只是空值!