我想从表中选择行,如果某一列包含某个数字(如981),则这些列中的数据为0或null格式如下:如何查询表的逗号分隔字段以查看数字是否在该字段中
1007,1035,1189,908,977,974,979,973,982,981,1007
如何在查询中使用这个短语?
明显低于这个查询是不够的,但我需要类似
SELECT * FROM `table` WHERE `column`='981'
感谢
我想从表中选择行,如果某一列包含某个数字(如981),则这些列中的数据为0或null格式如下:如何查询表的逗号分隔字段以查看数字是否在该字段中
1007,1035,1189,908,977,974,979,973,982,981,1007
如何在查询中使用这个短语?
明显低于这个查询是不够的,但我需要类似
SELECT * FROM `table` WHERE `column`='981'
感谢
如果你有正则表达式可以工作:
SELECT * FROM `table` WHERE `column` REGEXP '(^|,)951($|,)'
似乎工作... – 2012-03-28 13:05:49
东西,你可以使用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,在年底或在这些逗号分隔值的开头。
没有,这是一个示例行。行中的数字是任意的。 – 2012-03-28 12:53:10
'IN'无法解析同一列中的逗号分隔值,是吗?如果你在一列中有一个单一的号码,它会起作用,但是在你需要使用LIKE的列中用逗号分隔的列表检查单个号码。 (除非MySQL在这里真的很奇怪。) – 2012-03-28 13:01:57
是的,你是对的。我误解了原来的问题。 – sikander 2012-03-28 13:10:42
您可以尝试SELECT * FROM表WHERE列LIKE '%981%'。我不认为这是最好的解决方案,但有一个尝试。 – 2012-03-28 12:54:52