使用 like
_ 通配一个,仅匹配一个字符,
% 通配没有或多个字符
select ename,deptno from emp where ename like 'J%';
ENAME DEPTNO
---------- ------
JONES 20
JAMES 30
首字母为 J 的员工,J 后有没有字符,有多少字符都不管。
select ename,deptno from emp where ename like '_A%’;
ENAME DEPTNO
---------- ------
WARD 30
MARTIN 30
JAMES 30
寻找第二个字母为 A 的员工,第一个字母必须有,是什么无所谓。
当你想查询_,%特殊字符时,请用 escape.
Select ename from emp where ename like ‘%s_%’ escape ‘s ’;
我们并不想查找 S 后必须有一个字符以上的员工,而是要剔除 S,S 出现的目的就是转义,将_转义了,这里的_不是通配符,而是实际意义的_。
Select ename from emp where ename like ‘%/_%’ escape ‘/’;
一般我们使用/来转义,以免产生歧异。
查询 NULL 值
SQL> Select ename,comm from emp where comm = null;
no rows selected
因为 null 不等于 null,所以没有行被选出。未知不等于未知,无穷不等于无穷.
SQL> Select ename,comm from emp where comm = 'null';
Select ename,comm from emp where comm = 'null'
*
ERROR at line 1:
ORA-01722: invalid number
数据类型不匹配
SQL> Select ename,comm from emp where comm is null;
ENAME COMM
---------- -----
SMITH
JONES
BLAKE
CLARK
KING
JAMES
FORD
MILLER
And 运算
Select ename,deptno,sal From emp Where deptno=30 and sal>1200;
ENAME DEPTNO SAL
---------- ------ ----------
ALLEN 30 1600
WARD 30 1250
MARTIN 30 1250
BLAKE 30 2850
TURNER 30 1500
两个条件的交集,必须同时满足。
OR 运算
Select ename,deptno,sal From emp Where deptno=30 or sal>1200;
ENAME DEPTNO SAL
---------- ------ ----------
ALLEN 30 1600
WARD 30 1250
JONES 20 2975
MARTIN 30 1250
BLAKE 30 2850
CLARK 10 2450
KING 10 5000
TURNER 30 1500
JAMES 30 950
FORD 20 3000
MILLER 10 1300
两个条件的并集,满足一个就可以。
not 运算
Select ename,deptno,sal From emp Where ename not like 'T%';
ENAME DEPTNO SAL
---------- ------ ----------
SMITH 20 800
ALLEN 30 1600
WARD 30 1250
JONES 20 2975
MARTIN 30 1250
BLAKE 30 2850
CLARK 10 2450
KING 10 5000
JAMES 30 950
FORD 20 3000
MILLER 10 1300
补集,不是 T 打头的员工。
优先级
1.算术运算
2.连接运算
3.关系运算
4.IS [NOT] NULL, LIKE, [NOT] IN
5.Between
6.not
7.and
8.or
括号强制优先级

扫描二维码关注我的微学堂
搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!





