概述
**
模糊查询:
**
定义:当知晓的条件不是完整条件时,须用条件查询
语法:select * from 表名 where 列名 like 条件;
like:关键字,意思是:像
select * from score where 姓名 like ‘%王%’;–查询姓名中包含 王 字的所有数据
**%????*通配符 代表任意位置的任意个数字符
**_????*通配符 代表固定位置的一个字符
%字符:以字符结尾的数据;
select * from score where 姓名 like ‘%王’;–查询姓名结尾是王的所有数据
字符%:以字符开头的数据;
select * from score where 姓名 like ‘王%’;–查询姓名以王字开头的所有数据
**字符:**指结尾是字符,且字符前只有一位的数据;
select * from score where 姓名 like '王’;–查询名字是两个字,且第二个字是王的所有数据;
**字符????*指以字符开头,且字符后只有一位的数据;
select * from score where 姓名 like '王’;–查询名字是两个字,且第一个字是王的所有数据;
字符_ _:指以字符开头,且字符后有两位字符的数据;
select * from score where 姓名 like ‘王__’;–查询名字长度是3个字,且第一个字是王的数据
_ _字符:值以字符结尾,且字符前有两位字符的数据;
select * from score where 姓名 like ‘__王’;–查询名字长度是3个字,且最后一个字是王的数据;
模糊查询查询带下划线或者百分号的情况:
语法:
select * from 表名 where 列名 like ‘%/%%’ escape ‘/’;–查询列值中包含%的数据;
select * from 表名 where 列名 like ‘%/_%’ escape ‘/’;–查询列值中包含_的数据;
范例:
select ename from emp where ename like ‘%/%%’ escape ‘/’;
select ename from emp where ename like ‘%/_%’ escape ‘/’;
**/:**转义符,指明此处的%是要查找的内容,不是通配符,为了避免被认为是要被查找的内容,所以加escape转义,指明;
若要查找下划线和百分号挨着的情况,则需要使用两次转义符,即:
select ename from emp where ename like ‘%/_/%%’ escape ‘/’;
若要查找同时又下划线和百分号的数据,则:
select ename
from emp
where ename like ‘%/_%’ escape ‘/’
and ename like ‘%/%%’ escape ‘/’;
注意转义部分要写两次,第一个不能省略,否则第一个条件查找的是ename中有/且/后有一个字符的数据,与需求不符合。
**not like:**与like意思相反,即为 数据不像条件的.
select * from emp where ename not like ‘%EN%’;–查找ename不包含EN字眼的数据;
练习:
- 查询名字中有L的员工信息;
select * from emp where ename like ‘%L%’; - 查询姓名中不带有R的员工信息;
select * from emp where ename not like ‘%R%’; - 查询emp表中ename列所有以EN结尾的数据;
select * from emp where ename like ‘%EN’; - 查找emp表中ename列所有以MA开头的数据;
select * from emp where ename like ‘MA%’; - 查找emp表中ename列中包含LA字样的数据;
select * from emp where ename like ‘%LA%’; - 查找emp表中ename列有%的数据;
select * from emp where ename like ‘%/%%’ escape ‘/’; - 查找emp表中ename列有_的数据;
select * from emp where ename like ‘%/_%’ escape ‘/’; - 查找emp表中ename列同时有%和_的数据;
select * from emp where ename like ‘%/%%’ escape ‘/’ and ename like ‘%/_%’ escape ‘/’; - 查找emp表中ename列同时有%和_,且挨在一起的数据;
select * from emp where ename like ‘%/%/%’ escape ‘/’ or ename like '%//%%’ escape ‘/’; - 查找emp表中ename列同时有%和_,且不挨在一起的数据;
select * from emp where ename like ‘%/%%’ escape ‘/’ and ename like ‘%/%’ escape ‘/’ and ename not like '%/%/%’ escape ‘/’ and ename not like '%//%%’ escape ‘/’;
select *
from emp
where ename like '%/%%/%’ escape ‘/’
or ename like '%/%/%%’ escape ‘/’;
**解释:
'%/%%/%’:
两头的%表示满足数据中包含,即数据中间有%和,
/%表示有%, /b表示有下划线.
中间的%:%定义是匹配任意字符,所以可以是多个,也可以是没有.但我们要求%和_不挨着,所以中间至少有一位,那么这个一位用_代替。
所以这里可以将两者顺序调换,即可以写为_%.**
最后
以上就是正直牛排为你收集整理的数据库之模糊查询学习的全部内容,希望文章能够帮你解决数据库之模糊查询学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复