MySQL ‘LIKE (‘%this%’ OR ‘%that%’) and something=else’ not working错误

MySQL ‘LIKE (‘%this%’ OR ‘%that%’) and something=else’ not working错误

在使用MySQL进行查询时,在WHERE子句中通常会使用LIKE运算符来匹配字符串。但是,有些情况下,我们可能需要在LIKE运算符中使用两个或更多的模式。

例如,我们希望在一个字段中查找所有包含“this”或“that”的字符串,并且该字段还需要匹配另一个条件。我们可以使用以下查询:

SELECT * FROM table_name WHERE (column_name LIKE '%this%' OR column_name LIKE '%that%') AND something = 'else';
SQL

然而,有时候你会发现这个查询不起作用。当你在MySQL的LIKE运算符中使用多个模式时,它可能会因为优先级问题而返回错误的数据。

这时,我们可以使用括号来明确LIKE运算符的优先级,如上述查询所示。但是,这并不能保证所有情况都能正常工作。为了确保查询的正确性,我们可以使用正则表达式。

使用正则表达式可以轻松实现上述查询。以下是一个示例查询:

SELECT * FROM table_name WHERE column_name REGEXP 'this|that' AND something = 'else';
SQL

这个查询中使用了REGEXP(正则表达式)关键字来匹配多个模式。通过使用管道符(|)分隔多个模式,查询可以正确地返回包含“this”或“that”的所有行,并且匹配另一个条件。

阅读更多:MySQL 教程

总结

在MySQL中,当我们需要在LIKE运算符中使用多个模式时,我们必须使用括号来明确优先级。但是,这并不能保证所有情况都能正常工作。为了确保查询的准确性,我们可以使用正则表达式来匹配多个模式,以便正确地返回我们所需的数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册