json_extract_path_text转换为int错误

时间:2014-09-02 22:19:17

标签: amazon-redshift

我尝试从存储在amazon redshift中的文本字段中的JSON blob中提取整数。我的查询(粗略地)看起来像:

select json_extract_path_text(json_column, 'integer_field')::int from data;

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

ERROR: Invalid digit, Value '1', Pos 0, Type: Integer

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

1 个答案:

答案 0 :(得分:6)

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

nullif(json_extract_path_text(json_column, 'integer_field'), ' ')::int

现在我们知道了。