对多个值使用 MySQL Like 运算符
问题:
MySQL 查询尝试使用 LIKE 运算符来匹配包含“sports”或“pub”的值不会产生所需的结果结果。
查询:
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
预期行为:
查询应返回“感兴趣”的行字段包含“sports”或“pub”或
解释:
出现此问题的原因是具有多个模式的 LIKE 运算符需要 OR 条件。提供的查询尝试使用两个连续的 LIKE 运算符,而没有正确的 OR 逻辑,从而导致不正确的匹配。
解决方案 1:OR 条件
更简单的解决方案是使用OR 运算符指定多个匹配条件:
SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
解决方案 2:REGEXP运算符
另一种方法是使用 REGEXP(正则表达式)运算符,它支持使用单个表达式进行模式匹配:
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
此表达式使用 | (管道) 字符指定两个关键字之间的逻辑 OR,从而生成与“sports”或“pub”或两者匹配的单个模式。
请注意,REGEXP 运算符对于匹配多个模式更有效与使用 LIKE 和 OR 条件相比。
以上是如何有效地使用 MySQL LIKE 运算符来处理多个值?的详细内容。更多信息请关注PHP中文网其他相关文章!