2012-03-28 45 views
0

我想从表中选择行,如果某一列包含某个数字(如981),则这些列中的数据为0或null格式如下:如何查询表的逗号分隔字段以查看数字是否在该字段中

1007,1035,1189,908,977,974,979,973,982,981,1007 

如何在查询中使用这个短语?

明显低于这个查询是不够的,但我需要类似

SELECT * FROM `table` WHERE `column`='981' 

感谢

+0

您可以尝试SELECT * FROM表WHERE列LIKE '%981%'。我不认为这是最好的解决方案,但有一个尝试。 – 2012-03-28 12:54:52

回答

3

如果你有正则表达式可以工作:

SELECT * FROM `table` WHERE `column` REGEXP '(^|,)951($|,)' 
+0

似乎工作... – 2012-03-28 13:05:49

2

东西,你可以使用IN条款,checks whether a value is within a set of values

SELECT * FROM `table` WHERE `column` IN (1007,1035,1189,979,973,982,981,1007) 

SELECT * FROM `table` WHERE `column` IN ('abc','def','ghi') 

请注意,不能混用报价,IN列表中

编辑

带引号的值是我误会了原来的问题。如果您的列数据就像是1007,1035,1189,979,973,982,981,1007,你正在寻找的981存在那么你就必须在中间使用LIKE而不是IN

SELECT * FROM table WHERE (column LIKE ('%,981,%') OR column LIKE ('%,981') OR column LIKE ('981,%')) 

pattern match值981,在年底或在这些逗号分隔值的开头。

+0

没有,这是一个示例行。行中的数字是任意的。 – 2012-03-28 12:53:10

+0

'IN'无法解析同一列中的逗号分隔值,是吗?如果你在一列中有一个单一的号码,它会起作用,但是在你需要使用LIKE的列中用逗号分隔的列表检查单个号码。 (除非MySQL在这里真的很奇怪。) – 2012-03-28 13:01:57

+0

是的,你是对的。我误解了原来的问题。 – sikander 2012-03-28 13:10:42

相关问题