【问题标题】:Count the number of arrays in json with a MySQL select statement使用 MySQL select 语句计算 json 中的数组数量
【发布时间】:2022-06-10 18:08:17
【问题描述】:

如何使用 MySQL select 语句计算 json 中的数组数量?

比如下面这种情况,我想返回2。

sample
+-----------+-----------+----------------------------------+
| id | json                                                |
+-----------+-----------+----------------------------------+
| 1  | { items: [{name: a, age: 20}, {name: b, age: 30}] } |
...

我能够使用 json_extract 获取内容。

但我想数数。

select
  json_extract(json, '$.items')
from
  sample
where
  id = 1

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    select
      json_array_length(json_extract(json, '$.items')) as size
    from
      sample
    where
      id = 1
    

    json_array_length()用于统计json数组的大小

    【讨论】:

    • 它变成了一个错误。 ``` #1305 - FUNCTION json_array_length 不存在 ``` MySQL 版本是 5.7.xx,有没有其他办法?
    【解决方案2】:

    你可以使用JSON_LENGTH函数,它兼容MySQL 5.7:

    SELECT JSON_EXTRACT(json, '$.items'),
           JSON_LENGTH(json, '$.items')
    FROM sample 
    WHERE id = 1
    

    查看演示here

    【讨论】:

      【解决方案3】:

      这里有一个计数技巧,您可以使用LENGTH()REPLACE() 函数的组合。

      db<>fiddle

      SELECT id, json, ROUND((LENGTH(json)- LENGTH(REPLACE(json, 'name', '')))/4,0) AS array_count
      FROM (
          SELECT 1 AS id, '{ items: [{name: a, age: 20}, {name: b, age: 30}] }' AS json
      ) tmp
      

      【讨论】:

        猜你喜欢
        • 2019-08-08
        • 1970-01-01
        • 2013-04-25
        • 2017-08-22
        • 1970-01-01
        • 2018-12-22
        • 2015-11-19
        • 2015-01-27
        • 1970-01-01
        相关资源
        最近更新 更多