- 通配符可用于替代字符串中的任何其他字符
- 在SQL模式下,通配符常常与 LIKE 与 NOT LIKE 一起使用
- 在 LIKE 语句中,like 某个确定的值,和 where name= 某个确定的值是一样的,例如:
select * from a where name like 'exp_asd_10_123';
select * from a where name = 'exp_asd_10_123';
下图是选自 “a” 表的数据:
1、% 通配符的使用
% 通配符:可替代 0 个或多个字符
- 在 a 表中,查询 name 的值等于
exp_asd_10_123
的数据
select * from a where name like 'exp_asd_10_123'
查询结果:
- 在 a 表中,查询 name 的值包含有
esp
的数据
select * from a where name like '%esp%'
查询结果:
- 在 a 表中,查询 name 的值以
exp
开头的数据
select * from a where name like 'exp%'
查询结果:
- 在 a 表中,查询 name 的值以
456
结尾的数据
select * from a where name like '%456'
查询结果:
2、_ 通配符的使用
_ 通配符:可替代一个字符
- 在 a 表中,查询 name 的值以
nxp
开头的数据(n:为任意字符)
select * from a where name like '_xp%'
查询结果:
3、使用通配符时易忽略的一个问题
以上述 a 表为例:
当我们要查询以exp_asd_10_
开头的数据时,sql语句应该如何去写?
select * from a where name like 'exp_asd_10_%'
查询结果:
很自信的执行了这条sql语句,你会发现结果并不是自己所预期的那样,执行上面的sql语句会把所有的以exp_asd_10
开头的数据都查找到
原因:
在sql中,下划线_
也是一个通配符,能匹配任意一个字符,像上面那样写的话。
正确的写法应该是:
select * from a where name like 'exp\_asd\_10\_%'
在_
通配符前面加上转义字符\
,这样mysql就会把下划线通配符视为普通字符