MySQL ‘LIKE (‘%this%’ OR ‘%that%’) and something=else’ not working错误
在使用MySQL进行查询时,在WHERE子句中通常会使用LIKE运算符来匹配字符串。但是,有些情况下,我们可能需要在LIKE运算符中使用两个或更多的模式。
例如,我们希望在一个字段中查找所有包含“this”或“that”的字符串,并且该字段还需要匹配另一个条件。我们可以使用以下查询:
然而,有时候你会发现这个查询不起作用。当你在MySQL的LIKE运算符中使用多个模式时,它可能会因为优先级问题而返回错误的数据。
这时,我们可以使用括号来明确LIKE运算符的优先级,如上述查询所示。但是,这并不能保证所有情况都能正常工作。为了确保查询的正确性,我们可以使用正则表达式。
使用正则表达式可以轻松实现上述查询。以下是一个示例查询:
这个查询中使用了REGEXP(正则表达式)关键字来匹配多个模式。通过使用管道符(|)分隔多个模式,查询可以正确地返回包含“this”或“that”的所有行,并且匹配另一个条件。
阅读更多:MySQL 教程
总结
在MySQL中,当我们需要在LIKE运算符中使用多个模式时,我们必须使用括号来明确优先级。但是,这并不能保证所有情况都能正常工作。为了确保查询的准确性,我们可以使用正则表达式来匹配多个模式,以便正确地返回我们所需的数据。