这就是我所拥有的:
SELECT `id`, `names` FROM `screenplays` WHERE `names` LIKE '%joe%mike%'字段名称包含:
row1: joe
row2: mike
row3: joe,mike我如何返回所有3行作为结果?
发布于 2012-02-03 17:11:22
使用
SELECT `id`, `names`
FROM `screenplays`
WHERE `names` LIKE '%joe%'
OR `names` LIKE '%mike%'如果名称用逗号分隔,并且在指定joe时不需要像joey这样的名称,则可以展开查询,如下所示:
SELECT `id`, `names`
FROM `screenplays`
WHERE `names` LIKE 'joe'
OR `names` LIKE '%,joe'
OR `names` LIKE 'joe,%'
OR `names` LIKE '%,joe,%'类似地,对于每个关键字
发布于 2012-02-03 17:22:23
答案都很好,但我更喜欢使用MySQL对正则表达式的出色支持:
SELECT `id`, `names` FROM `screenplays` WHERE `names` REGEX 'joe|mike'要考虑逗号分隔的名称以及空格,请使用更高级的正则表达式:
SELECT `id`, `names` FROM `screenplays` WHERE `names` REGEX '(^|,) *(joe|mike) *($|,)'它可以分解为:
(^|,)#在行首或逗号后开始*#忽略任何空格(joe|mike) #要匹配的名称*#忽略任何空格($|,)#在行尾或逗号结束
请参阅MySQL manual page for REGEX
发布于 2012-02-03 17:12:36
SELECT `id`, `names` FROM `screenplays`
WHERE concat(',', `names`, ',') LIKE '%,mike,%' or concat(',', `names`, ',') LIKE '%,joe,%'向names添加逗号可防止在搜索carl时返回carlton。
https://stackoverflow.com/questions/9126129
复制相似问题