我在表中有一列包含如下数据:
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)
但我只希望能够使用一个数字而不是几个来搜索它,因为它们代表不同的东西。
答案 0 :(得分:4)
您可以使用FIND_IN_SET执行此操作:
SELECT col_name
FROM table_name
WHERE FIND_IN_SET('563', col_name);
答案 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%';