2012-01-04 4 views
1

У меня есть столбец VARCHAR, который содержит значения, разделенные запятой, и я хотел бы знать, могу ли я соответствовать числу в пределах этих значений, разделенных запятой?MySQL column IN

Мол, я бы ряд:

id | numbers 
1 | 1,2,4,5 
2 | 2,3,4,6 

И я хотел бы, чтобы соответствовать все строки с номером 2 в списке.

ответ

5

Посмотрите на функцию FIND_IN_SET.

SELECT * 
    FROM YourTable 
    WHERE FIND_IN_SET('2', numbers) <> 0 
+0

Так что в принципе я могу просто сделать 'ВЫБРАТЬ FIND_IN_SET (3, тест .test)> 0 FROM test'? – Manhim

+0

@Manhim Ваш синтаксис немного выключен. Взгляните на образец кода в моем ответе. –

+0

'SELECT FIND_IN_SET ('3', numbers) <> 0 FROM test'? Кажется, что он работает :) – Manhim

1

версия переносимыми между базами данных будет:

where numbers = '2' 
    or numbers like '2,%' 
    or numbers like '%,2,%' 
    or numbers like '%,2' 
1

Это не очень эффективно, но вот как:

SELECT * 
FROM table 
WHERE numbers LIKE '2,%' 
    OR numbers LIKE '%,2,%' 
    OR numbers LIKE '%,2' 
    OR numbers = '2';