通用函式和條件表示式

brj880719發表於2017-09-24

一、通用函式

函式 說明
NVL 語法:NVL(expr1,expr2)
說明:如果expr1為NULL,則該函式顯示expr2的值;
例子:
  1. SELECT SALARY, NVL(TO_CHAR(COMMISSION_PCT), 0) FROM EMPLOYEES;
NVL2 語法:NVL2(expr1,expr2,expr3)
說明:如果expr1的值為NULL,則該函式顯示expr3的值;不為NULL,顯示expr2的值;
例子:
  1. SELECT LAST_NAME,
  2.        SALARY,
  3.        COMMISSION_PCT,
  4.        NVL2(COMMISSION_PCT, 'SAL+COMM', 'SAL') INCOME
  5.   FROM EMPLOYEES
  6.  WHERE DEPARTMENT_ID IN (50, 80);

NULLIF 語法:NULLIF(expr1,expr2)
說明:如果expr1=expr2,返回NULL;若不等,則返回第一個表示式的值;
例子:
  1. SELECT FIRST_NAME,
  2.        LENGTH(FIRST_NAME) "expr1",
  3.        LAST_NAME,
  4.        LENGTH(LAST_NAME) "expr2",
  5.        NULLIF(LENGTH(FIRST_NAME), LENGTH(LAST_NAME)) RESULT
  6.   FROM EMPLOYEES;
COLESCE 語法:COALSECE(expr1,expr2,expr3)
說明:如果全為NULL,則函式值為NULL;若有一項不為NULL,則顯示那一項exprN;若三項都不為空,則顯示最前面的一項expr;
例子:
  1. SELECT COALESCE(NULL, 1, 2, 3, 4) FROM DUAL;

  2. SELECT COALESCE(NULL, NULL, 2, 3, 4) FROM DUAL;

二、條件表達函式

函式 說明
CASE 語法:
CASE expr 
  WHEN comparison_expr1THEN return_expr1
  [WHENcomparison_expr2 THENreturn_expr2
  WHENcomparison_exprn THENreturn_exprn
  ELSE else_expr]
END
說明:
1、對已知的資料庫中資料,按照自己的邏輯,進行自定義分組和資料分析
2、用此條件控制語句,實現自定義條件分組
3、條件控制語句中巢狀函式達到理想的計算效果
例句:
  1. SELECT last_name,salary,
  2.        (CASE WHEN salary<5000 THEN 'Low'
  3.              WHEN salary<10000 THEN 'Medium'
  4.              WHEN salary<20000 THEN 'Good'
  5.              ELSE 'Excellent'
  6.        END) qualified_salary
  7. FROM employees;
DECODE 語法:
DECODE(col|expression, search1, result1
        [, search2, result2,...,]
        [, default])
說明:decode 具有和 IF-THEN-ELSE 一樣的功能。
例句:
  1. SELECT PRODUCT_ID,
  2.        DECODE(WAREHOUSE_ID,
  3.               1, 'Southlake',
  4.               2, 'San Francisco',
  5.               3, 'New Jersey',
  6.               4, 'Seattle',
  7.               'Non-domestic') "Location of inventory"    
  8.   FROM INVENTORIES    
  9.  WHERE PRODUCT_ID < 1775;

三、巢狀函式

例句:
  1. SELECT LAST_NAME,
  2.       SALARY,
  3.       DECODE(TRUNC(SALARY / 2000, 0),
  4.               0, 0.00,
  5.               1, 0.09,
  6.               2, 0.20,
  7.               3, 0.30,
  8.               4, 0.40,
  9.               5, 0.42,
  10.               6, 0.44,
  11.               0.45) TAX_RATE
  12.   FROM EMPLOYEES
  13.  WHERE DEPARTMENT_ID = 80;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145381/,如需轉載,請註明出處,否則將追究法律責任。

相關文章