json_extract_path_text转换为int错误

Dav*_*veA 1 amazon-redshift

我正在尝试从存储在amazon redshift中的文本字段中的JSON blob中提取整数.我的查询看起来(大致)像:

select json_extract_path_text(json_column, 'integer_field')::int from data;
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个奇怪的错误:

ERROR: Invalid digit, Value '1', Pos 0, Type: Integer
Run Code Online (Sandbox Code Playgroud)

为什么'1'是无效的数字类型?这里发生了什么?

Dav*_*veA 6

事实证明(由于这个StackOverflow问题),当'integer_field'JSON blob中没有时,返回的值是空字符串''.出于某种原因,强制转换为整数函数不支持.奇怪的是,非空字符串''作为输入就好了,所以以下解决方法解决了这个问题:

nullif(json_extract_path_text(json_column, 'integer_field'), ' ')::int
Run Code Online (Sandbox Code Playgroud)

现在我们知道了.