【问题标题】:json_extract_path_text cast to int errorjson_extract_path_text 转换为 int 错误
【发布时间】:2014-09-02 22:19:16
【问题描述】:

我正在尝试从存储在亚马逊红移文本字段中的 JSON blob 中提取整数。我的查询看起来(大致)如下:

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

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

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

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

【问题讨论】:

  • 请注意,我将其转换为 int 是因为 json_extract_path_text 返回一个字符串。

标签: amazon-redshift


【解决方案1】:

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

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

现在我们知道了。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    相关资源
    最近更新 更多