【问题标题】:how to use json_extract_path_text?如何使用 json_extract_path_text?
【发布时间】:2023-01-16 15:36:15
【问题描述】:

我在 redshift 中使用 JSON_EXTRACT_PATH_TEXT 时遇到 JSON 提取的问题

我有两个单独的 JSON 列 一个包含客户正在使用的调制解调器,另一个包含充值详细信息

{“Mnfcr”:“Technicolor”,“Model_Name”:“Technicolor ABC1243”,“Smart_Modem”:“Y”} 对于上述情况,我可以使用 JSON_EXTRACT_PATH_TEXT(COLUMN_NAME, 'Model_Name') 作为 model_name 提取 Model_name

[{“日期”:“2021-12-24 21:42:01”,“金额”:50.00}] 这个给我添麻烦了。我用了上面相同的方法,但没有用。它给了我以下错误 错误:JSON 解析错误详细信息:---------------------------------------- ---- 错误:JSON 解析错误代码:8001 上下文:无效的 json 对象 [{"Date":"2021-07-03 17:12:16","Amt":50.00

我可以就如何使用 json_extract_path_text 提取它获得帮助吗? 我发现的另一种有效方法是使用 regexp_substring。

【问题讨论】:

    标签: amazon-redshift json-extract


    【解决方案1】:

    第二个字符串是一个 json 数组(方括号),而不是一个对象(大括号)。该数组包含一个元素,它是一个对象。所以你需要在使用 JSON_EXTRACT_PATH_TEXT() 之前从数组中提取对象。

    它的连接点是 JSON_EXTRACT_ARRAY_ELEMENT_TEXT()。

    把这些放在一起我们得到:

    JSON_EXTRACT_PATH_TEXT(
      JSON_EXTRACT_ARRAY_ELEMENT_TEXT( <column>, 0)
      , 'Amt')
    

    【讨论】:

      【解决方案2】:

      你可以像下面的例子一样使用 json_extract_path_text

      json_extract_path_text(json_columnName, json_keyName) = 比较值

      更多你可以参考这篇文章

      https://docs.aws.amazon.com/redshift/latest/dg/JSON_EXTRACT_PATH_TEXT.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-05
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多