MySQL like 查询包含%的字段

在SQl like语句中,比如

1
2
SELECT * FROM user WHERE username LIKE '%luchi%'
SELECT * FROM user WHERE username LIKE '_luchi_',

  • % 作为通配符通配多个
  • _ 作为通配符通配一个

但当like 所要查询的字段中含有 % ,我们如何去查?
这个时候就需要指明 字段中的那个’%‘ 不作为通配符,这里就需要用到 ESCAPE 转义

测试:

1
SELECT * FROM user WHERE username LIKE '%%%';

这里会发现三个%号都被当做通配符了;

解决办法:

1
SELECT * FROM user WHERE username LIKE '%1%%' ESCAPE '1';

备注:like放在where条件还能这样用,如果是在select中这样是不好使的,建议使用regexp