【问题标题】:mysql array of objects compare itemsmysql对象数组比较项目
【发布时间】:2020-06-03 04:48:07
【问题描述】:

我在 mysql json 中有问题,我想比较 json 数组中的一项对象。 例子: 在我的表中,我有一列 aJson 是数组:

[{"Name":"Mohsen","Code":3},{"Name":"Ali","Code":5},{"Name":"Reza","Code":2}] 

我要查找Code大于3的记录

输出:

[{"Name":"Mohsen","Code":3},{"Name":"Ali","Code":5},{"Name":"Reza","Code":8}] 

相同,更少,类似...

【问题讨论】:

    标签: mysql json mysql-json


    【解决方案1】:

    我认为可以使用 MySQL 版本 >= 5.7 中提供的 JSON_EXTRACT 解决此问题

    mysql> SELECT mycolumn
         > FROM mytable
         > WHERE mycolumn->"$.Code" > 3
    

    ->JSON_EXTRACT 的别名

    参考:

    【讨论】:

      【解决方案2】:

      感谢它像这样工作......

      > mysql> SELECT mycolumn
      >      > FROM mytable
      >      > WHERE mycolumn->"$[*].Code" > 3
      

      但是这个样本呢

      [
        {
          "Name": "Mohsen",
          "Code": 10,
          "Arrays": [
            {
              "Name": "Mohsen",
              "Code": 6
            },
            {
              "Name": "Ali",
              "Code": 7
            },
            {
              "Name": "Reza",
              "Code": 8
            }
          ]
        },
        {
          "Name": "Ali",
          "Code": 11,
          "Arrays": [
            {
              "Name": "Mohsen",
              "Code": 6
            },
            {
              "Name": "Ali",
              "Code": 7
            },
            {
              "Name": "Reza",
              "Code": 8
            }
          ]
        },
        {
          "Name": "Reza",
          "Code": 12,
          "Arrays": [
            {
              "Name": "Mohsen",
              "Code": 6
            },
            {
              "Name": "Ali",
              "Code": 7
            },
            {
              "Name": "Reza",
              "Code": 8
            }
          ]
        }
      ]
      

      查找 Arrays.Code > 3 的记录

      以下查询无效...

      SELECT * from table WHERE aJson->"$[*].Arrays[*].Code" > 7
      

      返回所有记录

      【讨论】:

      • 不要使用 answer 部分来询问 questions。只需在此处投票和/或接受答案,然后参考此线程提出新问题。
      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2016-04-03
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多