Oracle之Where子句中常用的运算符
2016-12-25 22:10
211 查看
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,则返回TRUEOR 两个条件中任何一个为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
相关文章推荐
- Oracle-18-select语句初步&SQL中用算术表达式&别名的使用&连接运算符%distinct&where子句
- 在oracle中where 子句和having子句中的区别
- oracle 性能优化操作六: 去掉Where子句中的IS NULL和IS NOT NULL
- where常用运算符
- ORACLE 在WHERE子句中引用列别名问题
- 在oracle中where 子句和having子句中的区别
- 在oracle中where 子句和having子句中的区别
- 关于Oracle在where子句中引用列别名问题的分析
- oracle中Where子句顺序是否对SQL性能有影响
- Oracle笔记(where子句 与 order by子句)
- ORACLE 在WHERE子句中引用列别名的问题
- oracle中Where子句的条件顺序对性能的影响
- Oracle性能优化学习笔记之WHERE子句中的连接顺序
- 在oracle中where 子句和having子句中的区别
- Oracle之where子句和order by子句
- Oracle性能优化学习笔记之WHERE子句中的连接顺序
- 在oracle中where 子句和having子句中的区别
- 【having子句】在oracle中where 子句和having子句中的区别
- oracle中where 子句和having子句中的区别
- 2、Oracle中简单查询(SELECT) 、限定查询语句(WHERE子句) 、排序(ORDER BY)