我有一个包含逗号分隔字符串的表,我想对'name'列执行类似查询,但'name'是逗号分隔的,所以它不容易检索数据,所以我使用replace来消除逗号,然后对别名列执行类似查询,但它不起作用。有什么方法可以对逗号分隔字符串执行类似查询吗
表:
id name
i school,education
mysql查询:
SELECT id,name, lower((REPLACE(name, ',', ''))) as test FROM `list`
where test like '%education%'
您应该认真地避免像当前那样将CSV数据存储到单个表列中。话虽如此,这里有一个可能的解决方法:
SELECT id, name
FROM list
WHERE CONCAT(',', LOWER(name), ',') LIKE '%,education,%';
上面技巧背后的想法是构建一个CSVname
字符串,看起来像:
,A,B,C,D,
也就是说,每个名称值的两边总是用逗号边界包围。然后,我们只需要检查,somename,
是否存在于这个CSV字符串中。