Запрос Mysql с подстановочным знаком в числовых строках

StackOverflow https://stackoverflow.com/questions/642474

  •  22-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь запросить таблицу 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'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top