2013-04-22 91 views
0

號我需要的東西是這樣的:的MySQL選擇其中

SELECT * FROM `table` WHERE '123' IN (`column`) 

在 '列'(VARCHAR 255場),還有一些號碼,如1,50,145,123,58,

我不知道要更好地解釋,但我想你明白我需要什麼。

+3

FIND_IN_SET( '123',列)(HTTP:// dev的.mys ql.com/doc/refman/5.6/en/string-functions.html#function_find-in-set)或正常地標準化你的數據 – 2013-04-22 11:32:17

+0

發表你試過的東西? – 2013-04-22 11:32:20

+0

數字1,50,145 ...每行一個嗎?或者每行中的「列」字段是一個包含所有數字的字符串? – Osiris 2013-04-22 11:32:55

回答

5
SELECT * FROM table WHERE FIND_IN_SET('123', column); 

參見http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

+0

謝謝,但作品只有當我在所有這些數字上搜索第一個數字時才罰款。我在一個字段中列出了所有這些數字(這裏命名爲'列')。在這個例子中,這些數字是一行,列= 1,50,145,123,58。 – Alexander 2013-04-22 11:40:05

+0

爲了澄清,你的領域'欄'是「1,50,145,123,58」。您正在搜索此列中的X可能是這些數字中的任何一個? – karmafunk 2013-04-22 11:50:41

+0

你的領域'列'需要是SET類型。 – karmafunk 2013-04-22 11:52:18

1
SELECT * FROM table WHERE column LIKE '%123%'; 
+0

謝謝,但例如,如果我搜索123但有一個像1234這樣的數字,將返回錯誤的結果,我需要在所有這些數字之間準確搜索123號碼 – Alexander 2013-04-22 11:46:04

+0

哦。那麼如果你不能使用其他的SET建議,你必須將'column'結果分割出來並測試它們。如果你使用LIKE返回一個帶有一些額外行的集合,你的後期處理可能很容易使用PHP,或者你將不得不在MySQL中編寫一個函數來爲你做。對不起,但我沒有時間現在做。這是一個很好的例子。[http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/] – ndasusers 2013-04-22 15:11:03

0

嘗試:

SELECT * FROM table WHERE column IN ('123'); 
+0

不適用於我,但是謝謝 – Alexander 2013-04-22 11:45:10

1

嘗試find_in_set

SELECT * FROM table WHERE find_in_set('123',column)

+0

謝謝,但只有在我搜索所有這些數字的第一個數字時才能正常工作。 – Alexander 2013-04-22 11:43:24

+0

@Bogdan你有沒有試過它..這應該不分位置 – alwaysLearn 2013-04-22 11:48:44

+0

@Bogdan見http://sqlfiddle.com/#!2/1c489/1 – alwaysLearn 2013-04-22 11:52:05