2012-03-28 42 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

相關問題