Sql 如何解决红移错误:“;“非空字段”缺少数据;?
我有一个嵌套的JSON字段,如下所示:Sql 如何解决红移错误:“;“非空字段”缺少数据;?,sql,amazon-redshift,Sql,Amazon Redshift,我有一个嵌套的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 WHE
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
,我在红移中收到此错误消息:
我试图使用以下条款:
(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
但我还是犯了同样的错误。如果源代码是这样的,如何解决此问题?以下是我解决此问题的方法:
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\u extract\u path\u text(趋势,'per')
不是NULL
值,只是一个空值