2011-01-14 3 views
0

Как найти число (например, «8») в CSV-строке в поле MySQL без поиска чисел, содержащих это число (например, «18» или «81»)?MySQL Regexp для поиска CSV-номера

Например:

  1. csvString1 в somecolumn = 8,14,18
  2. csvString2 в somecolumn = 4,5,8,13
  3. csvString2 в somecolumn = 18,81,82,88

мне нужно иметь # 1 и # 2 приходят вверх true и №3 приходят вверх false. Как мне это сделать

SELECT * FROM sometable WHERE somecolumn REGEXP '(what here?)';

ответ

3

использование find_in_set

select find_in_set('8', '18,81,82,88'); 
--> zero 

select find_in_set('8', '8,14,18'); 
--> 1 

select find_in_set('8', '4,5,8,13'); 
--> 3 

Так,

select * from your_table 
where find_in_set('8', your_col)<>0; 

PS: нормализовать данные, чтобы избежать в будущем проблему

+0

+1 путь лучше решение, чем регулярное выражение –

+0

такое же, как не равно (не меньше, и не больше) – ajreal