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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM