Запрос Mysql с подстановочным знаком в числовых строках
Вопрос
Я пытаюсь запросить таблицу MySQL, которая содержит строки чисел (т.е.«1,2,3,4,5»).
Как мне найти, есть ли в нем «1», а не «11», учитывая, что «9,10» «9%» не работает??
Зафиксированный!
(field like '10' OR field like '%,10,%' OR field like '%,10' OR field like '10,%')
Решение
Вам нужна функция FIND_IN_SET.Кстати, «9%» должно работать, если столбец содержит указанные вами значения, вы уверены, что запрашиваете
SELECT * FROM table WHERE field LIKE '9%'?
Другие советы
Вы можете попробовать функцию find_in_set
select find_in_set('1','1,2,3,11,12')
Стандартный SQL тоже может это сделать:
...
WHERE
',' + SetValue + ',' LIKE '%,1,%'
AND ',' + SetValue + ',' NOT LIKE '%,11,%'
Это выражение не может использовать индекс, поэтому производительность будет быстро снижаться по мере увеличения размера таблицы.
Для повышения производительности ваша таблица должна быть правильно нормализована, например.
SetId SetValue
1 1
1 2
1 3
1 4
1 5
вместо
SetId SetValue
1 '1,2,3,4,5'
Не связан с StackOverflow