亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle專題5之Oracle的單行函數

發布時間:2020-07-01 22:48:09 來源:網絡 閱讀:857 作者:糖醋白糖 欄目:關系型數據庫
  • SQL函數是什么?SQL函數是Oracle數據庫的內置函數,并且可用于各種SQL語句。SQL函數包含單行函數和多行函數。

    1、字符函數

  • 字符函數的輸入為字符類型,其返回值是字符類型或者是數字類型。
  • 字符函數可以分為大小寫控制函數(UPPER、LOWER和INITCAP)和字符控制函數(CONCAT、SUBSTR、LENGTH、INSERT、LPAD、RPAD、TRIM、REPLACE)兩類。

    a、大小寫控制函數

  • 這類函數用于改變字符的大小寫。(需要注意的是,當輸入的字符為NULL(null)時,返回值也為NULL)
  • UPPER(char):該函數用于將字符串轉換成大寫格式。
  • LOWER(char):該函數用于將字符串轉換成小寫格式。
  • INITCAP(char):該函數用于將字符串中的每個單詞的首字母大寫,其他字符小寫。
  • 示例:
    SQL> conn scott/02000059
    已連接。
    SQL> select * from emp where job = upper('salesman');
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
                    30
                7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
                    30
                7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
                    30
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
                    30
    SQL> select * from emp where lower(job) = 'clerk';
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7369 G_EASON    CLERK           7902 17-12月-80            800
                    20
                7876 ADAMS      CLERK           7788 23-5月 -87           1100
                    20
                7900 JAMES      CLERK           7698 03-12月-81            950
                    30
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7934 MILLER     CLERK           7782 23-1月 -82           1300
                    10
    SQL> select empno, initcap(ename) ename from emp;
             EMPNO ENAME
                7369 G_Eason
                7499 Allen
                7521 Ward
                7566 Jones
                7654 Martin
                7698 Blake
                7782 Clark
                7788 Scott
                7839 King
                7844 Turner
                7876 Adams
             EMPNO ENAME
                7900 James
                7902 Ford
                7934 Miller
    已選擇14行。

    b、字符控制函數

  • CONCAT(str1, str2):該函數用于字符串的連接,str1和str2用于指定被連接的字符串。
  • 例如:concat('lello', 'oracle') 結果:hellooracle
    SQL> select concat(concat(ename, ':'),sal) from emp;
    CONCAT(CONCAT(ENAME,':'),SAL)
    G_EASON:800
    ALLEN:1600
    WARD:1250
    JONES:2975
    MARTIN:1250
    BLAKE:2850
    CLARK:2450
    SCOTT:3000
    KING:5000
    TURNER:1500
    ADAMS:1100
    JAMES:950
    FORD:3000
    MILLER:1300
    已選擇14行。

  • SUBSTR(char, m[,n]):該函數用于截取字符串,char指定源自符串,m用于指定從哪個位置開始截取,n用于指定截取字符串的長度。如果m為0,則從首字母開始,如果m為負數,則從尾部開始。
  • 例如:substr('hello'1,3),結果為:ell;substr('hello',0,3),結果為hel;substr('hello',-1,1),結果為:o。
    SQL> select * from emp where substr(job, 1, 4) = 'SALE';
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
                    30
                7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
                    30
                7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
                    30
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
                    30

  • LENGTH(char):該函數用于返回字符串的長度,字符串中的后綴空格也計作字符串的長度。例如length('oracle '),結果為:7。
    SQL> select * from emp where length(ename) = 6;
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
                    30
                7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
                    30
                7934 MILLER     CLERK           7782 23-1月 -82           1300
                    10

  • INSTR(char1, char2, [,n[,m]]):該函數用于取得子串在字符串中的位置,char1用于指定源字符串,char2用于指定子串,n用于指定起始搜索位置(默認值:1),m用于指定子串的第m次出現的次數(默認值:1)。
  • 例如:instr('hello oracle', 'oracle'),結果為:7;instr('hello oracle hello oracle', 'oracle', 1, 2),結果為:20。
    SQL> select instr('hello oracle', 'oracle') from dual;
    INSTR('HELLOORACLE','ORACLE')
                            7
    SQL> select instr('hello oracle hello oracle', 'oracle', 5, 2) from dual;
    INSTR('HELLOORACLEHELLOORACLE','ORACLE',5,2)
                                                                                        20
  • 注意,dual為一張虛擬的表。

  • LPAD(char1, n char2):該函數用于在字符串的左端填充字符,char1用于指定源字符串,char2用于指定被填充的字符,n用于指定填充后的char1的總長度。
  • 例如:lpad('hello',10,'#'),結果是:#####hello。
        SQL> select lpad(job , 9, '*') from emp;
        LPAD(JOB,9,'*')
        ****CLERK
        *SALESMAN
        *SALESMAN
        **MANAGER
        *SALESMAN
        **MANAGER
        **MANAGER
        **ANALYST
        PRESIDENT
        *SALESMAN
        ****CLERK
        ****CLERK
        **ANALYST
        ****CLERK
        已選擇14行。

  • RPAD(char1, n char2):該函數用于在字符串的右端填充字符,char1用于指定源字符串,char2用于指定被填充的字符,n用于指定填充后的char1的總長度。
  • 例如:rpad('hello',10,'#'),結果是:hello#####。

  • REPLACE(char, search_string[, replacement_string]):該函數用于替換字符串的子串內容。Char用于指定源字符串,search_string用于指定被替換子串,repalcement_string用于指定替換子串。
  • 例如:replace('hello oracle', 'oracle', 'world'),結果為:hello world。
    SQL> select replace('hello oracle', 'oracle', 'world') replace_fun from dual;
    REPLACE_FUN
    hello world

    2、數值函數

  • 數值函數的輸入參數和返回值都是數字類型。
  • 常用的數值函數有:ROUND(),TRUNC(),MOD()。

  • ROUND(n,[,m]):四舍五入,說明:該函數用于返回四舍五入的結果,其中n可以使任意數字,m必須是整數。
  • 例如:ROUND(25.328),結果為:25;ROUND(25.328, 2),結果為:25.33;ROUND(25.328, -1),結果為:30。
    SQL> select sal/30, round(sal/30, 2) from emp;
    SAL/30 ROUND(SAL/30,2)
    26.6666667           26.67
    53.3333333           53.33
    41.6666667           41.67
    99.1666667           99.17
    41.6666667           41.67
        95              95
    81.6666667           81.67
       100             100
    166.666667          166.67
        50              50
    36.6666667           36.67
    31.6666667           31.67
       100             100
    43.3333333           43.33
    已選擇14行。

  • TRANC:截取數字,TRUNC(n, [m]),該函數用于截取數字,其中n可以是任意數字,m必須是整數。
  • 例如:trunc(25,328),結果為:25;trunc(25.328, 2),結果為:25.32;trunc(25.328, -1),結果為:20。
    SQL> select sal/30, trunc(sal/30, 2) from emp;
            SAL/30 TRUNC(SAL/30,2)
    26.6666667           26.66
    53.3333333           53.33
    41.6666667           41.66
    99.1666667           99.16
    41.6666667           41.66
                    95              95
    81.6666667           81.66
                 100             100
    166.666667          166.66
                    50              50
    36.6666667           36.66
    31.6666667           31.66
                 100             100
    43.3333333           43.33
    已選擇14行。

  • MOD:求模(求余數),MOD(m, n),該函數用于取得兩個數字相除后的余數。如果數字n為0,則返回結果為m。
  • 例如:mod(25,6),結果為:1;mod(25, 0),結果為:25。
    SQL> select * from emp where mod(empno, 2) = 0;
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7566 JONES      MANAGER         7839 02-4月 -81           2975
                    20
                7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
                    30
                7698 BLAKE      MANAGER         7839 01-5月 -81           2850
                    30
                7782 CLARK      MANAGER         7839 09-6月 -81           2450
                    10
                7788 SCOTT      ANALYST         7566 19-4月 -87           3000
                    20
                7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
                    30
            DEPTNO
                7876 ADAMS      CLERK           7788 23-5月 -87           1100
                    20
                7900 JAMES      CLERK           7698 03-12月-81            950
                    30
                7902 FORD       ANALYST         7566 03-12月-81           3000
                    20
                7934 MILLER     CLERK           7782 23-1月 -82           1300
                    10
    已選擇10行。

    3、日期和時間函數

    • 用于處理日期時間類型的函數。
    • 其常用的日期時間函數有:SYSDATE、MONTHS_BETWEEN、ADD_MONTHS、NEXT_DAY、LAST_DAY、ROUND、TRUNC。

-  SYSDATE:該函數用于返回當前系統日期。
-  舉例:select sysdate-1 昨天, sysdate 今天,sysdate + 1明天 from dual;。
    SQL> select sysdate-1 昨天, sysdate 今天, sysdate + 1 明天 from dual;
    昨天           今天           明天
    02-12月-17     03-12月-17     04-12月-17

  • MONTHS_BETWEEN(d1, d2):改函數用于返回日期d1和d2之間相差的月數。d1大于d2結果為正數,否則為負數。
  • 舉例:計算員工入職多長時間,select months_between(sysdate, hiredate) from emp;。
    SQL> select round(months_between(sysdate, hiredate)/12) hiredate_year from emp;
    HIREDATE_YEAR
                         37
                         37
                         37
                         37
                         36
                         37
                         36
                         31
                         36
                         36
                         31
                         36
                         36
                         36
    已選擇14行。

  • ADD_MONTHS:add_months(d, n)該函數用于返回特定日期時間之后或者之前的月份所對應的日期時間。(求出若干月之后的日期)d用于指定日期時間,n可以是任意整數。
  • 舉例:查詢每位員工入職30年后的年份,select ename, add_months(hiredate, 30* 12) from emp;。
    SQL> select ename, add_months(hiredate, 30* 12) from emp;
    ENAME      ADD_MONTHS(HIR
    G_EASON    17-12月-10
    ALLEN      20-2月 -11
    WARD       22-2月 -11
    JONES      02-4月 -11
    MARTIN     28-9月 -11
    BLAKE      01-5月 -11
    CLARK      09-6月 -11
    SCOTT      19-4月 -17
    KING       17-11月-11
    TURNER     08-9月 -11
    ADAMS      23-5月 -17
    JAMES      03-12月-11
    FORD       03-12月-11
    MILLER     23-1月 -12
    已選擇14行。

  • NEXT_DAY(d,char):該函數用于返回特定日期之后的第一個工作日所對應的日期。d用于指定日期時間值,char用于指定工作日。
  • 注意:當使用該函數時,工作日必須與日期語言匹配,假如日期語言為AMERICAN,那么周一對應于MONDAY;假如日期語言為簡體中文,那么周一對應于“星期一”。
  • 例如:查詢周一的日期,select sysdate, nextday(sysdate, '星期一') from dual;。
    SQL> select sysdate, next_day(sysdate, '星期一') 下一個工作日 from dual;
    SYSDATE        下一個工作日
    03-12月-17     04-12月-17

  • LAST_DAY:該函數用于返回特定日期所在月份的最后一天。
  • 例如:select sysdate, last_day(sysdate) from dual;。
    SQL> select sysdate, last_day(sysdate) from dual;
    SYSDATE        LAST_DAY(SYSDA
    03-12月-17     31-12月-17

  • ROUND(d[, fmt]):該函數用于返回日期時間的四舍五入的結果。d用于指定日期的時間值,fmt用于指定四舍五入的方式。
  • 如果設置fmt為YEAR,則7月1日為分界線,如果設置fmt為MONTH,則16日為分界線。
  • 例如:如果系統時間是“20-7月-17”,round(sysdate,'YEAR'),結果為:01-1月-18;round(sysdate, 'MONTH'),結果為:01-8月-17。
    SQL> select round(sysdate, 'YEAR') as 時間的四舍五入 from dual;
    時間的四舍五入
    01-1月 -18
    SQL> select round(sysdate, 'MONTH') as 時間的四舍五入 from dual;
    時間的四舍五入
    01-12月-17
  • 當前的系統時間為03-12月-17。

  • TRUNC:TRUNC(d[, fmt]):該函數用于截斷日期時間數據。D用于指定日期的時間值,fmt用于指定截斷日期時間數據的方法,如果設置fmt為YEAR,則結果為本年度的1月1日,如果設置fmt為MONTH,則結果為本月的1日。
  • 例如:trunc(sysdate, 'YEAR');trunc(sysdate, 'MONTH');。
    SQL> select trunc(sysdate, 'MONTH') as 截斷的時間 from dual;
    截斷的時間
    01-12月-17
    SQL> select trunc(sysdate, 'YEAR') as 截斷的時間 from dual;
    截斷的時間
    01-1月 -17
  • 當前的系統時間為03-12月-17。

    4、轉換函數

  • 該函數用于將數據從一種數據類型轉換成另外一種數據類型。

    a、隱式數據類型轉換

  • Oracle可以隱式的(自動的)進行數據類型轉換
源數據類型 目標數據類型
VARCHAR2或者CHAR NUMBER
VARCHAR2或者CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
  • 如下示例:

    SQL> select * from emp where sal > '3000';
             EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
            DEPTNO
                7839 KING       PRESIDENT            17-11月-81           5000
                    10
    SQL> select * from emp where hiredate = '17-11月-81';
    
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
    DEPTNO
      7839 KING       PRESIDENT            17-11月-81           5000
        10

    b、顯式地數據類型轉換

  • 日期類型 -> 字符類型(使用TO_CHAR())、字符類型 -> 日期類型(使用TO_DATE())。
  • 字符類型 -> 數值類型(使用TO_NUMBER())、數值類型 -> 字符類型(使用TO_CHAR())。

  • TO_CHAR:將日期類型轉換為字符類型。函數格式為:TO_CHAR(d, [, fmt [, 'nlsparams']])。
  • d用于知道你跟日起值,fmt用于指定日期格式模型,'nlsparams'用于指定日期顯示語言(格式:'NLS_DATE_LANGUAGE=language')
  • 默認日期顯示格式為DD-MON-RR。select to_char(hiredate, 'DD-MON-RR', 'NLS_DATE_LANGUAGE=AMERICAN') from emp;。
    SQL> select to_char(hiredate, 'DD-MON-RR', 'NLS_DATE_LANGUAGE=AMERICAN') to_char from emp;
    TO_CHAR
    17-DEC-80
    20-FEB-81
    22-FEB-81
    02-APR-81
    28-SEP-81
    01-MAY-81
    09-JUN-81
    19-APR-87
    17-NOV-81
    08-SEP-81
    23-MAY-87
    03-DEC-81
    03-DEC-81
    23-JAN-82
    已選擇14行。
  • 需要注意,當在格式模型中增加字符值時,必須用雙引號引住字符值。如:select to_char(hiredate, 'YYYY"年"MM"月"DD"日"') to_char from emp;。
    SQL> select to_char(hiredate, 'YYYY"年"MM"月"DD"日"') to_char from emp;
    TO_CHAR
    1980年12月17日
    1981年02月20日
    1981年02月22日
    1981年04月02日
    1981年09月28日
    1981年05月01日
    1981年06月09日
    1987年04月19日
    1981年11月17日
    1981年09月08日
    1987年05月23日
    1981年12月03日
    1981年12月03日
    1982年01月23日
    已選擇14行。

  • TO_CHAR:將數值類型轉換成字符類型。函數格式為:TO_CHAR(n[, fmt])。
  • n用于指定數值,fmt用于指定數字格式的模型。
  • 格式模型,常用的元素如下:
常用元素 說明
9 顯示數字,并且會忽略前導0
0 顯示數字,如果位數不足,則用0補齊
. 在指定位置顯示小數點
, 在指定位置顯示逗號
$ 在數字前加上美元符號
L 在數字前加上本地貨幣符號
SQL> SELECT sal, to_char(sal, 'L00,000,000.00') to_char FROM emp;
       SAL           TO_CHAR
       800           ¥00,000,800.00
      1600          ¥00,001,600.00
      1250          ¥00,001,250.00
      2975          ¥00,002,975.00
      1250          ¥00,001,250.00
      2850          ¥00,002,850.00
      2450          ¥00,002,450.00
      3000          ¥00,003,000.00
      5000          ¥00,005,000.00
      1500          ¥00,001,500.00
      1100          ¥00,001,100.00
       950          ¥00,000,950.00
      3000          ¥00,003,000.00
      1300          ¥00,001,300.00
已選擇14行。
SQL> SELECT sal, to_char(sal, 'L99,999,999.99')  to_char FROM emp;
       SAL                 TO_CHAR
       800                 ¥800.00
      1600               ¥1,600.00
      1250               ¥1,250.00
      2975               ¥2,975.00
      1250               ¥1,250.00
      2850               ¥2,850.00
      2450               ¥2,450.00
      3000               ¥3,000.00
      5000               ¥5,000.00
      1500               ¥1,500.00
      1100               ¥1,100.00
       950                 ¥950.00
      3000               ¥3,000.00
      1300               ¥1,300.00
已選擇14行。

  • TO_DATE(char[, fmt[, 'nlsparams']]):該函數用于將字符串轉換成日期類型的數據。char用于匹配日期類型的字符串,fmt用于指定日期格式模型,'nlsparams'用于指定日期語言。
  • 舉例:查看1982之后入職的員工信息:select ename, hiredate from emp where hiredate > to_date('1981-12-31', 'YYYY-MM-DD');
    SQL> select ename, hiredate from emp where hiredate > to_date('1981-12-31', 'YYYY-MM-DD');
    ENAME      HIREDATE
    SCOTT      19-4月 -87
    ADAMS      23-5月 -87
    MILLER     23-1月 -82

  • TO_NUMBER(n[, fmt]):該函數可以將包含數字的字符串轉換成數值類型。n是包含數字的字符串,fmt用于指定數字格式模型。
  • 顯示工資大于3000的所有員工的姓名和工資:
  • select ename, sal from emp where sal > to_number('¥3000', 'L99999');
    SQL> select ename, sal from emp where sal > to_number('¥3000', 'L99999');
    ENAME             SAL
    KING             5000

    5、通用函數

  • 此類函數適用于任何數據類型,同時也適用于空值。如:NVL(expr1, expr2)、NVL2(expr1, expr2, expr3)、NULLIF(expr1, expr2)、COALESCE(expr1 [ , expr2 ] [, ... ])。

    處理NULL

  • 例如:select ename, sal, comm, sal + comm from emp;
  • 在Oracle9i之前,處理null只能使用函數NVL。
  • 但是從Oracle9i之后,NVL或者NVL2都可以處理NULL。

  • NVL(expr1, expr2):該函數用于處理NULL。如果expr是null,則返回expr2,如果expr1不是null,則返回expr1。
  • 例如:select ename, sal, comm, sal + nvl(comm, 0) from emp;
    SQL> select ename, sal, comm, sal + nvl(comm, 0) from emp;
    ENAME             SAL       COMM SAL+NVL(COMM,0)
    G_EASON           800                        800
    ALLEN            1600        300            1900
    WARD             1250        500            1750
    JONES            2975                       2975
    MARTIN           1250       1400            2650
    BLAKE            2850                       2850
    CLARK            2450                       2450
    SCOTT            3000                       3000
    KING             5000                       5000
    TURNER           1500          0            1500
    ADAMS            1100                       1100
    JAMES             950                        950
    FORD             3000                       3000
    MILLER           1300                       1300
    已選擇14行。

  • NVL2(expr1, expr2, expr3):該函數用于處理NULL,如果expr1不是null,則返回expr2,如果expr1是null,則返回expr3。例如:select ename, sal, comm, nvl2(comm, sal+ comm, sal) nvl2 from emp;。
        SQL> select ename, sal, comm, nvl2(comm, sal+ comm, sal)  nvl2 from emp;
        ENAME             SAL       COMM       NVL2
        G_EASON        800                            800
        ALLEN            1600          300          1900
        WARD             1250        500            1750
        JONES            2975                           2975
        MARTIN           1250       1400           2650
        BLAKE            2850                           2850
        CLARK            2450                           2450
        SCOTT            3000                           3000
        KING                5000                           5000
        TURNER           1500          0            1500
        ADAMS            1100                         1100
        JAMES             950                           950
        FORD               3000                        3000
        MILLER            1300                         1300
        已選擇14行。

  • NULLIF(expr1, expr2):該函數用于比較表達式expr1和expr2,如果二者相等,則返回NULL,否則返回expr1。

  • COALESCE:COALESCE(expr1[, expr2][,...]。該函數用于返回表達式列表中第一個NOT NULL表達式的結果。例如:select ename, sal, comm, coalesce(sal + comm, sal) coalesce from emp;
    SQL> select ename, sal, comm, coalesce(sal + comm, sal)  coalesce from emp;
    ENAME             SAL       COMM   COALESCE
    EASON            3000                             3000
    G_EASON         800                             800
    ALLEN            1600          300             1900
    WARD             1250          500            1750
    JONES            2975                             2975
    MARTIN           1250         1400           2650
    BLAKE            2850                             2850
    CLARK            2450                             2450
    SCOTT            3000                             3000
    KING                5000                              5000
    TURNER           1500          0              1500
    ADAMS            1100                           1100
    JAMES             950                             950
    FORD             3000                             3000
    MILLER           1300                           1300
    已選擇15行。

    6、條件表達式

  • 條件表達式中主要有CASE表達式和Decode()函數。

    a、CASE表達式

  • 語法格式為:CASE expr WEHRE comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 ...... WHEN comparison_exprn THEN return_exprn ELSE else_expr] END。
  • 示例:想顯示全部雇員的職位,但是這些職位要求替換為中文顯示。

        SQL> select empno, ename, case job when 'CLERK' then '辦事員' when 'SALESMAE' then '銷售' when 'MANAGER' then '經理' when 'ANALYST' then '分析員' else
     '總裁' end case from emp;
             EMPNO ENAME      CASE
                7951 EASON      分析員
                7369 G_EASON    辦事員
                7499 ALLEN      總裁
                7521 WARD       總裁
                7566 JONES      經理
                7654 MARTIN     總裁
                7698 BLAKE      經理
                7782 CLARK      經理
                7788 SCOTT      分析員
                7839 KING       總裁
                7844 TURNER     總裁
                7876 ADAMS      辦事員
                7900 JAMES      辦事員
                7902 FORD       分析員
                7934 MILLER     辦事員
    已選擇15行。
    SQL>
    

    b、Decode函數

  • 語法格式:DECODE(col | expression, search2, result1, [, search3, result2, ...., ] [, default]。Decode函數和case表達式都可用于IF-THEN-ELSE邏輯判斷的。
  • 示例:想顯示全部雇員的職位,但是這些職位要求替換為中文顯示。
    SQL> select empno, ename, job, decode(job, 'CLERK', '辦事員', 'SALESMAN', '銷售', 'MANAGER', '經理', 'ANALYST', '分析員', '總裁') from emp;
             EMPNO ENAME      JOB       DECODE
                7951 EASON      ANALYST   分析員
                7369 G_EASON    CLERK     辦事員
                7499 ALLEN      SALESMAN  銷售
                7521 WARD       SALESMAN  銷售
                7566 JONES      MANAGER   經理
                7654 MARTIN     SALESMAN  銷售
                7698 BLAKE      MANAGER   經理
                7782 CLARK      MANAGER   經理
                7788 SCOTT      ANALYST   分析員
                7839 KING       PRESIDENT 總裁
                7844 TURNER     SALESMAN  銷售
                7876 ADAMS      CLERK     辦事員
                7900 JAMES      CLERK     辦事員
                7902 FORD       ANALYST   分析員
                7934 MILLER     CLERK     辦事員
    已選擇15行。

    7、嵌套函數

  • 嵌套函數的執行熟順序是由內到外。
  • 語法格式:F3(F2(col, arg1), arg2), arg3)。
  • 參照雇員信息表,想顯示距聘用日期3個月后的下一個星期一的日期,且日期格式如:2017-01-06。
  • 分析:距聘用日期3個月后:add_months(hiredate, 3),下一個星期一:next_day(add_months(hiredate,3), '星期一'),且日期格式如2017-01-06: to_char(next_day(add_months(hiredate,3), '星期一'), 'YYYY-MM-DD')。
        SQL> select to_char(next_day(add_months(hiredate,3), '星期一'), 'YYYY-MM-DD') new_date from emp;
    NEW_DATE
    2018-03-05
    1981-03-23
    1981-05-25
    1981-05-25
    1981-07-06
    1982-01-04
    1981-08-03
    1981-09-14
    1987-07-20
    1982-02-22
    1981-12-14
    1987-08-24
    1982-03-08
    1982-03-08
    1982-04-26
    已選擇15行。
  • 參照雇員信息表,顯示雇員日薪并四舍五入到2位小數的結果,然后對薪資格式以:¥1,182.19'這樣的例子形式進行格式化。
  • 分析:雇員日薪并四舍五入到2位小數的結果:雇員日薪并四舍五入到2位小數的結果:round(sal/30, 2);對薪資格式以‘¥1,182.19’這樣的例子形式進行格式化:to_char(round(sal/30, 2), 'L9,999.99')。
    SQL> select to_char(round(sal/30, 2), 'L9,999.99') from emp;
    TO_CHAR(ROUND(SAL/3
                         ¥100.00
                            ¥26.67
                            ¥53.33
                            ¥41.67
                            ¥99.17
                            ¥41.67
                            ¥95.00
                            ¥81.67
                         ¥100.00
                         ¥166.67
                            ¥50.00
                            ¥36.67
                            ¥31.67
                         ¥100.00
                            ¥43.33
    已選擇15行。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽中县| 邵阳县| 那曲县| 龙岩市| 荃湾区| 蚌埠市| 安新县| 清徐县| 滦南县| 望城县| 肇源县| 峨眉山市| 苏尼特左旗| 衡水市| 大方县| 浮梁县| 东乡| 南安市| 衡阳市| 错那县| 西盟| 林口县| 安义县| 昌乐县| 赞皇县| 营口市| 临汾市| 舒兰市| 那曲县| 清镇市| 亳州市| 淄博市| 盖州市| 沙湾县| 曲松县| 宣城市| 黔南| 河源市| 泗阳县| 周至县| 乌兰察布市|