我尝试从存储在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'无效的数字类型?这里发生了什么?
答案 0 :(得分:6)
事实证明(感谢this StackOverflow question)当JSON blob中没有'integer_field'
时,返回的值是空字符串''。出于某种原因,强制转换为整数函数不支持。奇怪的是,非空字符串''作为输入就好了,所以以下解决方法解决了这个问题:
nullif(json_extract_path_text(json_column, 'integer_field'), ' ')::int
现在我们知道了。