Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何解决红移错误:“;“非空字段”缺少数据;?_Sql_Amazon Redshift - Fatal编程技术网

Sql 如何解决红移错误:“;“非空字段”缺少数据;?

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

我有一个嵌套的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
,我在红移中收到此错误消息:

我试图使用以下条款:

(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
值,只是一个空值