SQL-запрос работает некорректно (числа)

Я разрабатываю PHP-скрипт с MySQL. Я сохранил данные жанра как «1, 2, 3» (ID)

Тогда у меня проблема с поиском данных.

Таблица моих данных:

мета-таблица

------------------- meta_id,meta_genres -------------------- |1 |1,2,3 | |2 |10,3,4 | |3 |12,3,5 | ------------------- 

мой запрос

 SELECT * FROM metas WHERE meta_genres LIKE '%1%' 

затем возвращаем идентификаторы: 1,2,3

Я хочу, чтобы он возвращал только 1.

Как я могу это исправить?

С наилучшими пожеланиями.

Вы также можете использовать REGEXP для поиска только разделенных 1 в наборе ввода

 SELECT * FROM metas WHERE meta_genres REGEXP '[[:<:]]1[[:>:]]' 

Используйте функцию FIND_IN_SET (str, strlist) :

 SELECT * FROM metas WHERE FIND_IN_SET(1, meta_genres) 

EDIT: если пробелы перед запятыми (например, 1 , 2 , 3 ) в meta_genres, то выше запрос может возвращать пустой набор. Чтобы обойти:

 SELECT * FROM metas WHERE FIND_IN_SET(1, REPLACE(meta_genres, ' ', '')); 

Вы никогда не будете извлекать только 1, это потому, что числа после 1 являются частью строки 2,3. Таким образом, запрос не рассматривает эти числа как отдельные числа, а просто как целую строку …..