2016-11-29 63 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