Mysql-запрос с подстановочными знаками на числовых строках - PullRequest
1 голос
/ 13 марта 2009

Я пытаюсь запросить таблицу 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,%') 

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

Вы можете попробовать функцию find_in_set

select find_in_set('1','1,2,3,11,12')
1 голос
/ 13 марта 2009

Вам нужна функция FIND_IN_SET . Кстати, «9%» должно работать, если столбец содержит указанные вами значения, вы уверены, что запрашиваете

SELECT * FROM table WHERE field LIKE '9%'?
0 голосов
/ 13 марта 2009

Стандартный 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'
...