使用alias列上的like子句搜索值



我有一个包含逗号分隔字符串的表,我想对'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字符串中。

最新更新