MySQL:为什么在LIKE操作符中转义不起作用



我正在MySQL 8.0中尝试模式匹配字符串:

CREATE TABLE foo (bar VARCHAR(250));
INSERT INTO `foo` (`bar`) VALUES ('%');

作为练习,我想使用LIKE编写一个特定的查询,该查询返回的行"类似于字面上的%">(我知道这实际上应该通过=比较来完成,但这是一个练习(

  1. 由于%是通配符,我不能简单地使用:

    SELECT * from `foo` WHERE `bar` LIKE '%';

  2. 当我尝试使用默认转义符进行转义时,它也会失败:

    SELECT * from `foo` WHERE `bar` LIKE '\%';

  3. 同样,当我尝试使用ESCAPE关键字来定义非默认转义符时:

    SELECT * from `foo` WHERE `bar` LIKE '|%' ESCAPE '|';

为什么查询2和3不适用于我

三个很简单。

%不是通配符不是像其他字符一样的字符

SELECT * from `foo` WHERE `bar` LIKE '%' ESCAPE '|';

运行良好

第二个也有效。

但你需要

SELECT * from `foo` WHERE `bar` LIKE '\%';

我记得你必须逃脱逃脱和通配符!

最新更新