2016-11-29 66 views
0

我有我的數據庫中的字段,它包含逗號分隔的整數,例如:如何查找包含逗號分隔值的記錄?

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

我需要構建一個SQL查詢將返回包含特定給定的整數的記錄,例如6 ,所以我當前的查詢是這樣的:

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

我包圍所需的值用逗號,以避免6匹配26但是很明顯,我目前的查詢將不會對匹配的第一個或最後一個值在現場因爲該領域沒有以逗號開頭或結尾,因此在上面的示例中它永遠不會找到434

我該如何編寫我的查詢,以便它能做我想做的事情?

+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

雖然我喜歡我的回答(讀者絕對清楚),Mihai的建議是最好的。 – FDavidov