Таблица
------------------------------------------
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 смотрит лишь есть ли данные в столбце, не проверяет на полное соответствие. Что можно тут придумать?
Функция json_contains(), когда её аргументы - массивы, просто проверяет, что каждый элемент второго массива присутствует в составе первого массива. При этом не обращается внимание ни на порядок, ни на дубликаты, ни на "излишки".
Если надо проверить на равенство, то следует использовать
AND json_contains(p_ids, '[2,3]')
AND json_contains('[2,3]', p_ids)
А вот если в массиве могут быть дубликаты, и надо проверить на строгое соответствие (например, предыдущий код даст True для аргументов [2,2,3]
и [2,3,3]
), то задача становится слегка нетривиальной...
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет, образовалась проблема на мобилкахБлок-ссылка отображается неправильно