Oracle之Where子句中常用的运算符

1.运算符及优先级:

  • 算数运算符:
    *,/ , + 、-
  • 逻辑运算符:
    not,and,or
  • 比较运算符:
    • 单行比较运算: =,>,>=,<,<=,<>
    • 多行比较运算: >any,>all,
SQL> select ename,job,sal,comm from emp where job = 'SALESMAN' or job = 'PRESIDENT' and sal > 1500;
ENAME      JOB             SAL      COMM
---------- --------- --------- ---------
ALLEN      SALESMAN    1600.00    300.00
WARD       SALESMAN    1250.00    500.00
MARTIN     SALESMAN    1250.00   1400.00
KING       PRESIDENT   5000.00 
TURNER     SALESMAN    1500.00      0.00

条件子句使用比较运算符比较两个选项,重要的是要理解这两个选项的数据类型

2.用between and操作符来查询出在某一范围内的行

SQL> select ename,sal from emp where sal between 1000 and 1500;
ENAME            SAL
---------- ---------
WARD         1250.00
MARTIN       1250.00
TURNER       1500.00
ADAMS        1100.00
MILLER       1300.00

between低值and高值,包括低值和高值

3.模糊查询及其通配符

在where子句中使用like谓词,常使用特殊符号%_ 匹配查找内容,也可以使用escape取消特殊符号的作用

SQL>
create table test (name char(10));
insert into test values ('sFdL');
insert into test values ('AEdLHH');
insert into test values ('A%dMH');
commit;

SQL> select * from test;
NAME
----------
sFdL
AEdLHH
A%dMH

SQL> select * from test where name like 'A\%%' escape '\';
NAME
----------
A%dMH

4.''""的用法

'' 内表示字符或日期数据类型,而"" 一般用户别名中有大小写、保留字、空格等场合,用recyclebin中的《表名》页需要"".

  • 单引号的转义:连续两个单引号表示转义.
SQL> select empno||' is Scott''s empno' from emp where empno = 7788;
EMPNO||'ISSCOTT''SEMPNO'
---------------------------
7788 is Scott's empno

5.用in操作符来检验一个值是否在一个列表中

SQL> select empno,ename,sal,mgr from emp where mgr in(7902,7566,7788);
EMPNO ENAME            SAL   MGR
----- ---------- --------- -----
 7369 SMITH         800.00  7902
 7788 SCOTT        3000.00  7566
 7876 ADAMS        1100.00  7788
 7902 FORD         3000.00  7566

6.交互输入变量符&&& 的用途

SQL> select empno,ename from emp where empno=&empnumber;
输入 empnumber 的值: 7788
EMPNO ENAME
---------- ----------
7788 SCOT

& 后面是字符型的,注意单引号问题,可以有两种写法:

SQL> select empno,ename from emp where ename='&emp_name';
输入 emp_name 的值: SCOTT
EMPNO ENAME
---------- ----------
7788 SCOTT

SQL> select empno,ename from emp where ename=&emp_name;
输入 emp_name 的值: 'SCOTT'
EMPNO ENAME
---------- ----------
7788 SCOTT

&&存储了第一次输入的值,使后面的相同的&不再提问,自动取代

SQL> select empno,ename,&&salary from emp where deptno=10 order by &salary;
输入 salary 的值: sal
EMPNO ENAME SAL
---------- ---------- ----------
7934 MILLER 1300
7782 CLARK 2450
7839 KING 5000

&&salary相当于引用了&salary的值
注:上面的&salary已经在当前session下存储了,可以使用undefine salary解除。
define(定义变量)、undefine(解除变量)

--define:显示当前已经定义的变量(包括默认值)
SQL> define
DEFINE _SQLPLUS_RELEASE = "000000000" (CHAR)
DEFINE _EDITOR          = "PLSQLDev" (CHAR)
DEFINE _DATE            = "2016/12/25" (CHAR)
DEFINE _PRIVILEGE       = "" (CHAR)
DEFINE _O_VERSION       = "" (CHAR)
DEFINE _O_RELEASE       = "000000000" (CHAR)
DEFINE _USER            = "SCOTT" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "ORCL" (CHAR)
DEFINE salary           = "sal" (CHAR)

--set define on; 打开&
--set define off; 关闭&

SQL> define emp_num = 7788;
SQL> select empno,ename,sal from emp where empno = &emp_num;
EMPNO ENAME            SAL
----- ---------- ---------
 7788 SCOTT        3000.00

SQL> undefine emp_num ; –取消变量

如果不想显示“原值”和“新值”的提示,可以使用set verify on|off 命令

7.使用逻辑操作符:AND;OR;NOT

  • AND 两个条件都为TRUE,则返回TRUE
  • OR 两个条件中任何一个为TRUE,则返回TRUE
  • NOT 如果条件为FALSE,返回TRUE
SQL> select ename,job from emp where job not in('CLERK','MANAGER','ANALYST');
ENAME      JOB
---------- ---------
ALLEN      SALESMAN
WARD       SALESMAN
MARTIN     SALESMAN
KING       PRESIDENT
TURNER     SALESMAN
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值