我正在MySQL 8.0中尝试模式匹配字符串:
CREATE TABLE foo (bar VARCHAR(250));
INSERT INTO `foo` (`bar`) VALUES ('%');
作为练习,我想使用LIKE
编写一个特定的查询,该查询返回的行"类似于字面上的%
">(我知道这实际上应该通过=
比较来完成,但这是一个练习(
由于
%
是通配符,我不能简单地使用:SELECT * from `foo` WHERE `bar` LIKE '%';
当我尝试使用默认转义符
进行转义时,它也会失败:
SELECT * from `foo` WHERE `bar` LIKE '\%';
同样,当我尝试使用
ESCAPE
关键字来定义非默认转义符时:SELECT * from `foo` WHERE `bar` LIKE '|%' ESCAPE '|';
为什么查询2和3不适用于我
三个很简单。
%不是通配符不是像其他字符一样的字符
SELECT * from `foo` WHERE `bar` LIKE '%' ESCAPE '|';
运行良好
第二个也有效。
但你需要
SELECT * from `foo` WHERE `bar` LIKE '\%';
我记得你必须逃脱逃脱和通配符!