在看like之前先了解下通配符和搜索模式:
通 配 符 ( wildcard) 用来匹配值的一部分的特殊字符。
搜索模式(search pattern) 由字面值、通配符或两者组合构成的搜索条件。
目前SQL中支持多种通配符:
- 百分号%通配符:匹配任意字符任意次数。但是不支持匹配NULL值
- 下划线_通配符:匹配任意字符一次。
注:百分号%,绝大多数DBMS都支持;下划线_,少量的DBMS不支持。
一般说道通配符,搜索模式,都会和转义符息息相关,在SQL中和大多数场景中的转义符一样,使用反斜杆:
select * from student where name like 'xiao\%h%';
结果:
name |
---|
'xiao%huang' |
上述SQL中第一个%被转义,在搜索条件中就是用来匹配%;第二个%表示通配符,匹配任意字符任意次。
1.like关键字
上述了解到SQL中使用利用通配符组合搜索模式进行模糊匹配,在SQL中如何应用搜索模式是通过like关键字,语法:
select column1, column2...columnN from table_name where columnJ like pattern;
由以上语法可以看出,like是where的子句,且后接搜索模式。
select * from student where name like 'x%n'
如上述检索表示:查询name中的以x开头,n结尾的student,结果:
name |
---|
xiaolan |
从以上可以看出,在SQL中的搜索模式的功能非常强大。但是事物的两面性决定,搜索模式有其缺点:
- like的模糊匹配相对于严格的值匹配的能够精准搜索,性能略低;
- like的应用场景有时会使得索引失效
参考
《SQL必知必会》