我想從表中選擇行,如果某一列包含某個數字(如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