Sql - 我可以搜索记录中的特定数字吗?

时间:2012-09-03 10:09:54

标签: mysql sql select records sql-like

我在表中有一列包含如下数据:

column: col_name
 row 1: 3451,3547,234,456,6487,2341,7856,546,76
 row 2: 4746,234,6757,234,7657,6346,563
 row 3: 546,7467,4562,456,234
 row 4: 563,3246,5641,4637,234,7854,567,577

我希望能够根据记录中是否有特定数字来选择记录。

E.g。当234出现在所有行中时,它会全部选择它们; 563出现在2中,依此类推。 这不起作用:

select col_name from table_name where col_name like '%234%';

我认为这可能是因为我对如何选择列和行感到困惑,但我还在为其他什么工作而感到困惑,请帮助升值!

编辑:我想我自己和一些回复者(对不起,伙计们)感到困惑。我没有尝试找到与我的查询匹配的列名,我试图在列中找到与我的查询匹配的数据,即行中的数据。一些答案似乎是针对一个未知的列名,但我知道我使用的是哪一列。

如果我搜索其中包含563的行,这是我期望获得的:

4746,234,6757,234,7657,6346,563      (row 2)
563,3246,5641,4637,234,7854,567,577  (row 4)

如果我使用查询中的所有值搜索它,如下所示:

select col_name from table_name where col_name = '4746,234,6757,234,7657,6346,563';

然后它将返回行:

4746,234,6757,234,7657,6346,563      (row 2)

但我只希望能够使用一个数字而不是几个来搜索它,因为它们代表不同的东西。

5 个答案:

答案 0 :(得分:4)

您可以使用FIND_IN_SET执行此操作:

SELECT col_name 
FROM table_name 
WHERE FIND_IN_SET('563', col_name);

示例:SQLFiddle

答案 1 :(得分:1)

查看您在数据库中存储数据的方式,相应地选择包含逗号空格的模式。

你的查询是正确的!!

答案 2 :(得分:0)

select 
      col_name
from table_name 
WHERE col_name LIKE '234,%'
OR col_name LIKE '%,234'
OR col_name LIKE '%,234,%'
OR col_name = '234'

不要担心行。它将搜索您只需提供列名的行。

答案 3 :(得分:0)

试试这个

SELECT col_name
FROM   table_name 
WHERE  concat(',',col_name,',') like '%,234,%';

答案 4 :(得分:0)

尝试这个

  

SELECT col_name FROM table_name WHERE','+ col_name +','like   '%,234%';