在where子句中,like操作符我们经常会用到,比如,当我们只知道一个人的名字,却不知道他的姓,去查询的他的相关信息时,就需要用到like操作符。
在like操作符,常用到的通配符是"%",在搜索串中,%表示任何字符出现的任意次数
以部门表为例
查询部门名称中以"es"结尾的部门编号,和部门名称。那么sql就是:
select * from departments where dept_name like '%es';
那么查询结果为:
如果查询部门名称中含有"es"字符的部门编号,和部门名称。那么sql就是
select * from departments where dept_name like '%es%';
查询结果为
以上两个例子区别在于,一个是以"es"结尾,那么,因为"%"匹配任意数量字符,所以在"es"前面添加上"%"即可。另一个是包含"es"就要考虑到"es"出现的位置可能在最前面,中间,和末尾,三种情况,所以在"es"前面和后面都需要添加上"%"。
另一个通配符就是下划线"_",下划线"_"的用途和"%"一样,但是下划线"_"只能匹配单个字符而不是多个字符
比如查询以"es"结尾的五个字母组成的部门名称的部门信息
那么sql就需要写成:
select * from departments where dept_name like '___es';
需要写三个下划线"_",查询结果为:
通配符的使用还是很方便的,但是这种方便性是以牺牲性能为代价的,使用通配符查询时要比准确查询花费的时间更长,所以不要过度使用通配符。