2016-11-29 2 views
0

У меня есть поле в моей базе данных, которая содержит запятую целых чисел, например:Как найти записи, содержащие значение, разделенное запятыми?

"4,6,18,26,29,34" 

Мне нужно построить запрос SQL, который возвратит запись, которая содержит определенное заданное число, например 6 , так что мой текущий запрос выглядит так:

SELECT * FROM mytable WHERE CSVField LIKE "%,6,%" 

Я окружила нужное значение с запятой, чтобы избежать 6 соответствия 26 однако, очевидно, что мой текущий запрос не будет соответствовать против первого или последнего значения в поле потому что поле не начинайте или заканчивайте запятой, поэтому в приведенном выше примере он никогда не найдет 4 или 34.

Как я могу написать свой запрос, чтобы он сделал то, что я хочу?

+1

http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database -column-really-that-bad/3653574 – e4c5

+1

'WHERE FIND_IN_SET (6, CSVField)' – Mihai

ответ

0

Вы можете попробовать:

SELECT * FROM mytable WHERE CSVField LIKE "%,6,%" 
         OR CSVField LIKE "6,%" 
         OR CSVField LIKE "%,6" 

Надеюсь, вам таблица весьма мала, хотя.

UPDATE

После пост Михая, попробуйте:

SELECT * FROM mytable WHERE FIND_IN_SET(CSVField,'6') > 0 
+0

Хотя мне нравится мой ответ (абсолютно понятный для читателя), предложение Михая было бы лучше. – FDavidov

Смежные вопросы