@m1kz

Как найти в mysql ряд где значение json массива равно значению?

Как найти нечто вроде:
SELECT * FROM test WHERE array_test.value = 2;
и чтобы оно вывело ряд с id=2;

mysql> select * from test;
+----+----------------------------+
| id | array_test                 |
+----+----------------------------+
|  2 | [1, 2, "asd", true]        |
|  3 | {"0": "false", "1": "one"} |
+----+----------------------------+
2 rows in set (0,00 sec)
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Akina
Сетевой и системный админ, SQL-программист.
В качестве демонстрации, что "Сервер умнее, чем вы думаете!":

SELECT id, CAST(array_test AS CHAR) array_test 
FROM test
WHERE JSON_OVERLAPS(array_test, CAST('[2]' AS JSON));


DEMO fiddle

PS. Да, там именно запятая. И знак - именно восклицательный.
Ответ написан
Комментировать
thewind
@thewind
php программист, front / backend developer
Комментировать
@qqNemo
Это поиск по столбцу array_test, если попадет "2", "ываыв2", "уцацу2ауцац". Выведет их в результат
SELECT * FROM `test` WHERE `array_test` LIKE '%2%'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы