2013-04-22 68 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