2

我在表中有一个列,其中包含以下数据:

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

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

例如,当 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)

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

4

5 回答 5

4

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

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

示例:SQLFiddle

于 2012-09-03T10:19:09.487 回答
1

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

您的查询是正确的!

于 2012-09-03T10:23:12.363 回答
0

try this one

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

于 2012-09-03T10:22:52.550 回答
0

尝试这个

SELECT col_name
FROM   table_name 
WHERE  concat(',',col_name,',') like '%,234,%';
于 2012-09-03T10:16:50.307 回答
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'

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

于 2012-09-03T10:13:26.520 回答