oracle之WHERE子句中常用的运算符
WHERE子句中常用的运算符
4.1 运算符及优先级:
算数运算符
*,/,+,-,
逻辑运算符
not, and ,or
比较运算符
单行比较运算 =,>, >=,<,<=, <>
多行比较运算 >any,>all,<any,<all,in,not in
模糊比较 like(配合“%”和“_”)
特殊比较 is null
()优先级最高
SQL>select ename, job, sal ,comm from emp where job='SALESMAN' OR job='PRESIDENT' AND sal> 1500;
考点:条件子句使用比较运算符比较两个选项,重要的是要理解这两个选项的数据类型。
4.2 用BETWEEN AND操作符来查询出在某一范围内的行.
SQL> SELECT ename, sal FROM emp WHERE sal BETWEEN 1000 AND 1500;
//between 低值 and 高值, 包括低值和高值。
4.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.4 ' '和" "的用法:
''内表示字符或日期数据类型,而" " 一般用于别名中有大小写、保留字、空格等场合,引用recyclebin中的《表名》也需要" ".
单引号的转义:连续两个单引号表示转义.
SQL> select empno||' is Scott''s empno' from emp where empno=7788;
EMPNO||'ISSCOTT''SEMPNO'
--------------------------------------------------------
7788 is Scott's empno
4.5 用IN操作符来检验一个值是否在一个列表中
SQL> SELECT empno, ename, sal, mgr FROM emp WHERE mgr IN (7902, 7566, 7788);
4.6 交互输入变量符&和&&的用途:
SQL> select empno,ename from emp where empno=&empnumber;
输入 empnumber 的值: 7788
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 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已经在当前session下存储了,可以使用undefine salary解除。
define(定义变量)和undefine命令(解除变量)
SQL> define --显示当前已经定义的变量(包括默认值)
SQL> set define on|off可以打开和关闭&。
SQL> define emp_num=7788 --定义变量
SQL> select empno,ename,sal from emp where empno=&emp_num;
EMPNO ENAME SAL
---------- ---------- ----------
7788 SCOTT 3000
SQL>undefine emp_num --取消变量
如果不想显示“原值”和“新值”的提示,可以使用set verify on|off命令
4.7 使用逻辑操作符: AND; OR; NOT
AND 两个条件都为TRUE ,则返回TRUE
SQL> SELECT empno,ename,job,sal FROM emp WHERE sal>=1100 AND job='CLERK';
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7876 ADAMS CLERK 1100
7934 MILLER CLERK 1300
OR 两个条件中任何一个为TRUE,则返回TRUE
SQL> SELECT empno,ename,job,sal FROM emp WHERE sal>=1100 OR job='CLERK';
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7369 SMITH CLERK 800
7499 ALLEN SALESMAN 1600
7521 WARD SALESMAN 1250
7566 JONES MANAGER 2975
7654 MARTIN SALESMAN 1250
......
已选择14行。
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之WHERE子句中常用的运算符的更多相关文章
- Java中常用的运算符
运算符是一种“功能”符号,用以通知 Java 进行相关的运算,Java 语言中常用的运算符可分为如下几种: 算数运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符. 一.算数运算符 Java 中常 ...
- Java学习笔记五:Java中常用的运算符
Java中常用的运算符 运算符是一种“功能”符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 score 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作. Java ...
- php中常用的运算符
运算符 运算符是告诉PHP做相关运算的标识符号. PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. 1.变量名记得加“$” 符: 2. ...
- Oracle入门第六天(中)——SET运算符(交并差集)
一.概述 1.SET运算符是什么 将多个查询用 SET 操作符连接组成一个新的查询 UNION/UNION ALL——并集 INTERSECT——交集 MINUS——差集(A\B=A中去掉B中也有的元 ...
- java常用的运算符
Java 语言中常用的运算符可分为如下几种: Ø 算术运算符 Ø 赋值运算符 Ø 比较运算符 Ø 逻辑运算符 Ø 条件运算符
- oracle中where 子句和having子句中的区别
1.where 不能放在GROUP BY 后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE 3.WHERE 后面的条件中不能有聚集函数 ...
- 在oracle中where 子句和having子句中的区别
在oracle中where 子句和having子句中的区别 1.where 不能放在GROUP BY 后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用 ...
- oracle中where子句和having子句中的区别
1.where 不能放在GROUP BY 后面2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE3.WHERE 后面的条件中不能有聚集函数 ...
- oracle SELECT子句中避免使用 ‘ * ‘
当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法. 不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所 ...
随机推荐
- MyBatis使用LocalDateTime遇到的一系列问题
问题 在Mybaits中传入参数为LocalDateTime,查询发现结果集为空,插入时发现时间相差13小时 测试 新建工程,新建测试库(主要此处新工程使用的JDBC为mysql-connector- ...
- windows下mongoDB的下载和安装
1.进入mongoDB官网,官网地址:https://www.mongodb.com 2. 点击Try free按钮,进入下载页面 3.点击download进行下载:下载完成如下图: 4.点击下载的 ...
- JDK1.8源码学习-ArrayList
JDK1.8源码学习-ArrayList 目录 一.ArrayList简介 为了弥补普通数组无法自动扩容的不足,Java提供了集合类,其中ArrayList对数组进行了封装,使其可以自动的扩容或缩小长 ...
- 推断(inference)和预测(prediction)
上二年级的大儿子一直在喝无乳糖牛奶,最近让他尝试喝正常牛奶,看看反应如何.三天过后,儿子说,好像没反应,我可不可以说我不对乳糖敏感了. 我说,呃,这个问题不简单啊.你知道吗,这在统计学上叫推断. 儿子 ...
- 面试28k职位,老乡面试官从HashCode到HashMap给我讲了一下午!「回家赶忙整理出1.6万字的面试材料」
作者:小傅哥 博客:https://bugstack.cn 目录 一.前言 二.HashCode为什么使用31作为乘数 1. 固定乘积31在这用到了 2. 来自stackoverflow的回答 3. ...
- 计算机网络-网络层(6)ICMP协议
互联网控制报文协议(ICMP,Internet Control Message Protocol),被主机和路由器用来彼此沟通网络层的信息 ICMP报文是承载在IP分组中的,即lCMP报文是作为IP有 ...
- HM16.0 TAppEncoder
参考: https://www.cnblogs.com/tiansha/p/6458573.html https://blog.csdn.net/liangjiubujiu/article/deta ...
- 这可能是最详细的解析HTTP走私攻击的文章
前言 HTTP Desync Attacks也就是HTTP走私攻击,是我见到的比较有趣的一种攻击方式,这里来对这种漏洞进行介绍. TL;DR HTTP走私攻击利用了HTTP协议本身的问题:HTTP中存 ...
- APP重构之路:引入单元测试
一.为什么要引入单元测试 在开发过程中我们会遇到这样一些问题: 面对需要重构庞大的模块代码时无从下手 修改了一处地方却在另一处地方引发了新的bug 扩展新功能的同时导致旧代码出现bug 在测试人员难以 ...
- VUE响应式原理-如何追踪变化
Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是普通的 JavaScript 对象.而当你修改它们时,视图会进行更新.这使得状态管理非常简单直接 如何追踪变化 当你把一个普通的 Ja ...