【问题标题】:Query JSON array using MySQL使用 MySQL 查询 JSON 数组
【发布时间】:2019-12-30 16:32:48
【问题描述】:

我正在尝试获取 Rule 列中的数据。它有一个 JSON 格式的值。我正在尝试构建查询以获取显示"value":8 的部分。

列名:Rule

列内的 JSON:

{"element":[{"maxDiscount":0,"minAmount":100,"total":{"type":"ABSOLUTE_OFF","value":8}}]}

我被这个查询卡住了:

select id, rule->>'$."total"' from table A
order by id desc;

我想要的输出是...

ID | Value
1A | 8

【问题讨论】:

    标签: mysql sql json


    【解决方案1】:

    您可以在此处尝试使用 JSON 路径 $.element[0].total.value

    SELECT
        id,
        JSON_EXTRACT(rule, '$.element[0].total.value') AS val
    FROM tableA
    ORDER BY id DESC;
    

    【讨论】:

      【解决方案2】:

      这是你要找的吗?

      rule ->> "$.element[0].total.value" 
      

      这将为您提供total 实体的value 属性,它是element 数组中的第一个元素。

      这也可以表达:

      json_extract(rule, "$.element[0].total.value") 
      

      Demo on DB Fiddle

      select rule ->> "$.element[0].total.value" res
      from (
          select cast('{"element":[{"maxDiscount":0,"minAmount":100,"total":{"type":"ABSOLUTE_OFF","value":8}}]}' as json) rule
      ) t
      
      |资源 | | :-- | | 8 |

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 2022-01-07
        • 2019-02-07
        • 2021-01-04
        • 2018-04-18
        • 2017-05-26
        • 2016-12-12
        • 2014-08-17
        • 2016-05-31
        相关资源
        最近更新 更多