天天看點

資料庫通用函數的使用

通用函數的使用

1. NVL(數字|列,預設值):如果顯示數字是null,則使用預設數值表示,如果不為空,則顯示原始值;

資料之中null是無法計算的,因為他是一個無法确定的值,是以它參加數學計算的話結果為null

要求查詢出每個雇員的編号,姓名,職位,雇擁日期,年薪

SELECT empno,ename,job,hiredate,comm,(sal+NVL(comm,0))*12 年薪

FROM emp;

驗證NVL()函數

SELECT NVL(3,2)

FROM dual;

2. NVL2(數字|列,傳回結果1(不為空顯示),傳回結果2(為空顯示)):判斷指定列是否是null,如果不為null則顯示結果1,否則傳回結果2

查詢每個雇員的編号,姓名,年薪,基本工資,獎金

SELECT empno,ename,NVL2(comm,sal+comm,sal)*12 年薪,sal,comm

FROM emp;

3. NULLIF(表達式1,表達式2):比較表達式1和表達式2的結果是否相等,如果相等傳回NULL,如果不等傳回表達式1

1.驗證NULLIF()函數

SELECT NULLIF(1,1),NULLIF(1,2)

FROM dual;

2.驗證NULLIF()函數:比較名字的長度和工作的名字長度是否相等

SELECT empno,ename,job,LENGTH(ename),LENGTH(job),

      NULLIF(LENGTH(ename),LENGTH(job)) NULLIF

FROM emp;

4. DECODE(列|值,判斷值1,顯示結果1.判斷值2,顯示結果2.。。。預設值):多值判斷,如果某一個列(或者某一個值)與判斷值相同,則使用指定的顯示結果輸出,如果沒有滿足條件,則顯示預設值:就是哪個條件滿足了,就直接輸出這個條件的顯示結果,否則顯示預設值

驗證DECODE()函數

SELECT

      DECODE(2,1,'内容為1',2,'内容為2'),

      DECODE(2,1,'内容為1','沒有滿足條件')

FROM dual;

查詢雇員的姓名,職員,基本工資等資訊,但是要求所有的職位資訊都換成中文顯示:

SELECT ename,job,

      DECODE(job,'CLERK','業務員',

      'SALESMAN','銷售人員',

      'MANAGER','經理',

      'ANALYST','分析員',

      'PRESIDENT','jijie_KING'

      ) 職位

FROM emp;

5. CASE列|數值WHEN表達式1THEN顯示結果1….ELSE..表達式N…END:用于是吸納多條件判斷,在WHEN之後編寫條件,而在THEN之後編寫條件滿足的顯示操作,如果都不滿足則使用ELSE中的表達式處理:就是說case後面為要比較的列或者數值,when後面跟的是一個比較條件(與case後的列|數值相比較)滿足的話就執行then後面的操作,不滿足就執行else後的操作;

查詢每個雇員姓名,工資,職位,同時顯示新的工資(新的工資标準為:辦事員增加10%,銷售增加、20%,經理增加30%,其他職位增加50%)

SELECT ename, sal,job,

      CASE job

    WHEN 'CLERK' THEN sal*1.1

     WHEN 'SALESMAN' THEN sal*1.2

    WHEN 'MANAGER' THEN SAL*1.3

  ELSE sal*1.5

  END NEWSAL

FROM emp;

6. COALESCE(表達式1,表達式2,。。。。表達式n):将表達式逐個判斷,如果表達式1的内容是null,則顯示表達式2,如果表達式2的内容是null,則顯示表達式3,依次類推,如果表達式n的結果還是null,則傳回null

驗證:

SELECT COALESCE(NULL,'1',NULL,'3')

FROM dual;