MySQL, сравнить 2 json

105
27 декабря 2019, 12:40

Таблица

------------------------------------------
id | user_id |    begin_date      | p_ids
------------------------------------------
35 |       1 |2019-04-02 12:00:00 | [2,3]
38 |       1 |2019-04-02 15:00:00 | [2]

SELECT * FROM `orders`  
WHERE user_id = 1  
AND begin_date = "2019-04-02 12:00:00"
AND json_contains(p_ids, '[2,3]');

Пытаюсь вот сравнить 2 json-а. json_contains смотрит лишь есть ли данные в столбце, не проверяет на полное соответствие. Что можно тут придумать?

Answer 1

Функция json_contains(), когда её аргументы - массивы, просто проверяет, что каждый элемент второго массива присутствует в составе первого массива. При этом не обращается внимание ни на порядок, ни на дубликаты, ни на "излишки".

Если надо проверить на равенство, то следует использовать

AND json_contains(p_ids, '[2,3]') 
AND json_contains('[2,3]', p_ids)

А вот если в массиве могут быть дубликаты, и надо проверить на строгое соответствие (например, предыдущий код даст True для аргументов [2,2,3] и [2,3,3]), то задача становится слегка нетривиальной...

READ ALSO
Изменить форму input-а

Изменить форму input-а

Вывожу в таблице в инпуты значения из бд

136
Кнопка выходит за блок

Кнопка выходит за блок

Всем привет, образовалась проблема на мобилкахБлок-ссылка отображается неправильно

151
Некоторые вопросы по БЭМ

Некоторые вопросы по БЭМ

Читаю БЭМ и появились некоторые вопросы:

140