mysql массив объектов сравнения предметов - PullRequest
2 голосов
/ 19 февраля 2020

У меня есть проблема в mysql json, что я хочу сравнить один элемент объекта в массиве json. пример: в моей таблице есть столбец Json, который является массивом:

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

Я хочу найти записи, где код больше 3

вывод:

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

то же самое для равных, меньше, как ...

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Я думаю, что это можно решить с помощью JSON_EXTRACT, который доступен в MySQL версии> = 5.7

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

-> - это псевдоним для JSON_EXTRACT

Ссылка :

0 голосов
/ 19 февраля 2020

спасибо, это работает так ...

> 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

вернуть все записи

...