MySQL LIKE ограничение

В основном у меня есть строка в моей таблице, которая имеет следующий формат для ее значения – 1,2,3,4,10,11,21,34 т. Д.

Я извлекаю значения с помощью инструкции LIKE, но поскольку я использую ее с %<value>% , при поиске 1 она возвращает 11, 21, 1 и так далее.

Как я могу его ограничить, чтобы вернуть значения на основе одного?

    Вместо col LIKE '%<value>%' do

     col LIKE '%,<value>,%' OR col LIKE '<value>,%' OR col LIKE '%,<value>' OR col LIKE '<value>' 

    или еще лучше

     col REGEXP '(.+,|^)<val>(,.+|$)' 

    Но лучшим решением является изменение структуры данных! Используйте либо тип SET , либо несколько полей, или таблицу соединений.

    Попробуйте find_in_set() строки find_in_set() :

     SELECT ... FROM ... WHERE FIND_IN_SET(somevalue, '1,2,3,4,10'); 

    Обратите внимание, что это просто функция MySQL и недоступна нигде, не пробираясь через огромные обручи.

    Если вы хотите вернуть только определенное совпадение, используйте вместо = LIKE. Как и для возврата частичных совпадений, в отличие от =, который возвращает только определенные совпадения. Если вы просто хотите сопоставить первую часть, используйте%, но 11 все равно вернет 111, но не 211. Общей ошибкой является использование LIKE для всего, ИЛИ удаление %% вокруг. Кроме того, вы действительно имеете в виду, что VALUE для строки в вашей базе данных MYSQL составляет 1,2,3,4,11,12 и т. Д.? И если да, то почему вы пытаетесь найти это значение на основе числа, которое в нем? Я бы подумал, что вы будете искать подмножество целого, например, 3,4,11% и т. Д. …

    Хотя я согласен с другими ответами относительно изменения структуры данных, проблему, с которой вы сталкиваетесь, можно легко устранить, сохранив каждое значение в вашем поле последовательных данных, инкапсулированное с обеих сторон разделителем.

    I don't recommend it , но если вы изменили свои данные с 1,2,3,4,10,11,21,34 до ,1,2,3,4,10,11,21,34, , вы будете обратите внимание, что каждое значение помечено с обеих сторон запятой, поэтому теперь вы можете искать %,<value>,%