Я знаю, что не является подходящей техникой иметь структуру таблицы MySQL как таковой, но я должен работать с такими. Проблема состоит в том, что поле в таблице имеет значение с целыми числами с запятой, например "1,3,5,7,10", и я хочу, чтобы запрос возвращал строки, в которых field
имеет a для запроса, прошедшего число в это, например:
SELECT * FROM `table` WHERE '5' IN (`field_in_table`)
Однако это не работает, если в этом случае "5" не является первым номером в поле. Любые советы, как это решить?
Спасибо заранее, С Уважением, Jonas
Посмотрите
Возвращает значение в диапазоне от 1 до N если строка str находится в строке list strlist, состоящий из N подстроки. Строковый список - это строка состоящий из подстрок, разделенных "," персонажи. Если первый аргумент является постоянной строкой, а вторая - столбец типа SET, Функция FIND_IN_SET() оптимизирована для использовать битовую арифметику. Возвращает 0, если str не находится в списке или если strlist является пустая строка.
Вместо этого вы можете использовать WHERE field_in_table LIKE '%5%'
.
Конечно, проблема была бы: "1,59,98" вернется, как хорошо.
Вы можете попробовать
SELECT *
FROM table
WHERE '%,5,%' LIKE field_in_table OR
'%,5' LIKE field_in_table OR
'5,%' LIKE field_in_table;
Лучшим подходом может быть использование регулярных выражений, тема, на которой я не являюсь авторитетом.
SELECT * FROM table WHERE field_in_table LIKE '%5'");
должен работать
SELECT *
FROM table
WHERE FIELD LIKE '%,5,%' OR
FIELD LIKE '5,%' OR
FIELD LIKE '%,5'