• SQL堂上作业三


    字符串相关

    小写字母转换

    在一些数据查询的场景中,我们要查询一些同时包含大小写字母的值,但是一般情况下无法实现大小写模糊匹配。

    SELECT employee_id, last_name, department_id
    FROM employees
    WHERE last_name = 'higgins';
    
    未选定行
    

    我们发现,上文就没有输出

    我们将last_name 改为lower(last_name),发现sql就可以实现大小写模糊匹配了

    SELECT employee_id, last_name, department_id
    FROM employees
    WHERE LOWER(last_name) = 'higgins';
    

    输出如下

    EMPLOYEE_ID LAST_NAME                                          DEPARTMENT_ID
    ----------- -------------------------------------------------- -------------
            205 Higgins                                                      110
    

    一些字符串处理函数

    用途 FUNCTION RESULT
    连接两个字符串 CONCAT('Hello', 'World') HelloWorld
    截取子串 SUBSTR('HelloWorld',1,5) Hello
    求字符串长度 LENGTH('HelloWorld') 10
    求串1中首次出现串2的位置 INSTR('HelloWorld', 'W') 6
    左填充* LPAD(salary,10,'*') \(*****24000\)
    右填充* RPAD(salary, 10, '*') \(24000*****\)
    翻转字符串 TRIM('H' FROM 'HelloWorld') elloWorld

    字符串处理函数综合应用

    SELECT employee_id, CONCAT(first_name, last_name) NAME, 
    job_id, LENGTH (last_name), 
    INSTR(last_name, 'a') "Contains 'a'?"
    FROM employees
    WHERE SUBSTR(job_id, 4) = 'REP';
    
    

    这个语句的意思是:输出(职工ID,姓+名,职业ID,姓的长度,姓中首次出现a的位置)

    输出如下

    EMPLOYEE_ID NAME                                                                                       JOB_ID               LENGTH(LAST_NAME) Contains 'a'?
    ----------- ------------------------------------------------------------------------------------------ -------------------- ----------------- -------------
            150 PeterTucker                                                                                SA_REP                               6             0
            151 DavidBernstein                                                                             SA_REP                               9             0
            152 PeterHall                                                                                  SA_REP                               4             2
            153 ChristopherOlsen                                                                           SA_REP                               5             0
            154 NanetteCambrault                                                                           SA_REP                               9             2
            155 OliverTuvault                                                                              SA_REP                               7             4
            156 JanetteKing                                                                                SA_REP                               4             0
            157 PatrickSully                                                                               SA_REP                               5             0
            158 AllanMcEwen                                                                                SA_REP                               6             0
            159 LindseySmith                                                                               SA_REP                               5             0
            160 LouiseDoran                                                                                SA_REP                               5             4
            161 SarathSewall                                                                               SA_REP                               6             4
            162 ClaraVishney                                                                               SA_REP                               7             0
            163 DanielleGreene                                                                             SA_REP                               6             0
            164 MatteaMarvins                                                                              SA_REP                               7             2
            165 DavidLee                                                                                   SA_REP                               3             0
            166 SundarAnde                                                                                 SA_REP                               4             0
            167 AmitBanda                                                                                  SA_REP                               5             2
            168 LisaOzer                                                                                   SA_REP                               4             0
            169 HarrisonBloom                                                                              SA_REP                               5             0
            170 TaylerFox                                                                                  SA_REP                               3             0
            171 WilliamSmith                                                                               SA_REP                               5             0
            172 ElizabethBates                                                                             SA_REP                               5             2
            173 SunditaKumar                                                                               SA_REP                               5             4
            174 EllenAbel                                                                                  SA_REP                               4             0
            175 AlyssaHutton                                                                               SA_REP                               6             0
            176 JonathonTaylor                                                                             SA_REP                               6             2
            177 JackLivingston                                                                             SA_REP                              10             0
            178 KimberelyGrant                                                                             SA_REP                               5             3
            179 CharlesJohnson                                                                             SA_REP                               7             0
            202 PatFay                                                                                     MK_REP                               3             2
            203 SusanMavris                                                                                HR_REP                               6             2
            204 HermannBaer                                                                                PR_REP                               4             2
    
    已选择33行。
    

    运算相关

    有这一些函数可以使用

    ROUND(a,b):四舍五入函数,将数a保留b位小数后输出,其中第b+1位四舍五入

    TRUNC(a,b):保留b位函数,第b+1位直接舍弃

    MOD(a,b): 输出a%b,取模函数

    ROUND

    SELECT ROUND(45.923,2), ROUND(45.923,0),
    ROUND(45.923,-1)
    FROM DUAL;
    

    输出如下

    ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
    --------------- --------------- ----------------
              45.92              46               50
    

    TRUNC

    SELECT TRUNC(45.923,2), TRUNC(45.923),
    TRUNC(45.923,-2)
    FROM DUAL;
    

    输出如下

    TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-2)
    --------------- ------------- ----------------
              45.92            45                0
    
    

    MOD

    SELECT last_name, salary, MOD(salary, 5000)
    FROM employees
    WHERE job_id = 'SA_REP';
    
    

    输出如下

    LAST_NAME                                              SALARY MOD(SALARY,5000)
    -------------------------------------------------- ---------- ----------------
    Tucker                                                  10000                0
    Bernstein                                                9500             4500
    Hall                                                     9000             4000
    Olsen                                                    8000             3000
    Cambrault                                                7500             2500
    Tuvault                                                  7000             2000
    King                                                    10000                0
    Sully                                                    9500             4500
    McEwen                                                   9000             4000
    Smith                                                    8000             3000
    Doran                                                    7500             2500
    Sewall                                                   7000             2000
    Vishney                                                 10500              500
    Greene                                                   9500             4500
    Marvins                                                  7200             2200
    Lee                                                      6800             1800
    Ande                                                     6400             1400
    Banda                                                    6200             1200
    Ozer                                                    11500             1500
    Bloom                                                   10000                0
    Fox                                                      9600             4600
    Smith                                                    7400             2400
    Bates                                                    7300             2300
    Kumar                                                    6100             1100
    Abel                                                    11000             1000
    Hutton                                                   8800             3800
    Taylor                                                   8600             3600
    Livingston                                               8400             3400
    Grant                                                    7000             2000
    Johnson                                                  6200             1200
    
    已选择30行。
    
    

    日期相关

    数据库中可以存储日期,时间等数据

    注意:日期,时间等数据是可以运算的

    默认情况

    默认情况下,输出将按照DD-MM-YYYY格式进行

    SELECT last_name, hire_date
    FROM employees
    WHERE last_name like 'G%';
    
    

    输出如下

    LAST_NAME                                          HIRE_DATE
    -------------------------------------------------- --------------
    Gates                                              11-7月 -98
    Gee                                                12-12月-99
    Geoni                                              03-2月 -00
    Gietz                                              07-6月 -94
    Grant                                              13-1月 -00
    Grant                                              24-5月 -99
    Greenberg                                          17-8月 -94
    Greene                                             19-3月 -99
    
    已选择8行。
    
    

    SYSDATE

    SYSDATE用于表示当前的日期和时间

    SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
    FROM employees
    WHERE department_id = 90;
    
    

    输出如下

    LAST_NAME                                               WEEKS
    -------------------------------------------------- ----------
    King                                               1843.48921
    Kochhar                                            1725.34635
    De Haan                                            1552.48921
    
    

    日期运算符

    常用的日期运算符如下所示:

    功能 Function Output
    输出两个日期间隔了几个月 MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194
    在某个日期上加上若干个月 ADD_MONTHS ('11-JAN-94',6) '11-JUL-94'
    找到符合条件的下一天 NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95'
    找到符合条件的上一天 LAST_DAY('01-FEB-95') '28-FEB-
    找到符合条件的前一个日期 ROUND
    找到符合条件的后一个日期 TRUNC
    SELECT last_name,
    TO_CHAR(hire_date, 'fmDD Month YYYY')
    AS HIREDATE
    FROM employees;
    
    

    输出如下:

    LAST_NAME                                          HIREDATE
    -------------------------------------------------- --------------------------------
    King                                               17 6月 1987
    Kochhar                                            21 9月 1989
    De Haan                                            13 1月 1993
    Hunold                                             3 1月 1990
    Ernst                                              21 5月 1991
    Austin                                             25 6月 1997
    Pataballa                                          5 2月 1998
    Lorentz                                            7 2月 1999
    Greenberg                                          17 8月 1994
    Faviet                                             16 8月 1994
    Chen                                               28 9月 1997
    Sciarra                                            30 9月 1997
    Urman                                              7 3月 1998
    Popp                                               7 12月 1999
    Raphaely                                           7 12月 1994
    Khoo                                               18 5月 1995
    Baida                                              24 12月 1997
    Tobias                                             24 7月 1997
    Himuro                                             15 11月 1998
    Colmenares                                         10 8月 1999
    Weiss                                              18 7月 1996
    Fripp                                              10 4月 1997
    Kaufling                                           1 5月 1995
    Vollman                                            10 10月 1997
    Mourgos                                            16 11月 1999
    Nayer                                              16 7月 1997
    Mikkilineni                                        28 9月 1998
    Landry                                             14 1月 1999
    Markle                                             8 3月 2000
    Bissot                                             20 8月 1997
    Atkinson                                           30 10月 1997
    Marlow                                             16 2月 1997
    Olson                                              10 4月 1999
    Mallin                                             14 6月 1996
    Rogers                                             26 8月 1998
    Gee                                                12 12月 1999
    Philtanker                                         6 2月 2000
    Ladwig                                             14 7月 1995
    Stiles                                             26 10月 1997
    Seo                                                12 2月 1998
    Patel                                              6 4月 1998
    Rajs                                               17 10月 1995
    Davies                                             29 1月 1997
    Matos                                              15 3月 1998
    Vargas                                             9 7月 1998
    Russell                                            1 10月 1996
    Partners                                           5 1月 1997
    Errazuriz                                          10 3月 1997
    Cambrault                                          15 10月 1999
    Zlotkey                                            29 1月 2000
    Tucker                                             30 1月 1997
    Bernstein                                          24 3月 1997
    Hall                                               20 8月 1997
    Olsen                                              30 3月 1998
    Cambrault                                          9 12月 1998
    Tuvault                                            23 11月 1999
    King                                               30 1月 1996
    Sully                                              4 3月 1996
    McEwen                                             1 8月 1996
    Smith                                              10 3月 1997
    Doran                                              15 12月 1997
    Sewall                                             3 11月 1998
    Vishney                                            11 11月 1997
    Greene                                             19 3月 1999
    Marvins                                            24 1月 2000
    Lee                                                23 2月 2000
    Ande                                               24 3月 2000
    Banda                                              21 4月 2000
    Ozer                                               11 3月 1997
    Bloom                                              23 3月 1998
    Fox                                                24 1月 1998
    Smith                                              23 2月 1999
    Bates                                              24 3月 1999
    Kumar                                              21 4月 2000
    Abel                                               11 5月 1996
    Hutton                                             19 3月 1997
    Taylor                                             24 3月 1998
    Livingston                                         23 4月 1998
    Grant                                              24 5月 1999
    Johnson                                            4 1月 2000
    Taylor                                             24 1月 1998
    Fleaur                                             23 2月 1998
    Sullivan                                           21 6月 1999
    Geoni                                              3 2月 2000
    Sarchand                                           27 1月 1996
    Bull                                               20 2月 1997
    Dellinger                                          24 6月 1998
    Cabrio                                             7 2月 1999
    Chung                                              14 6月 1997
    Dilly                                              13 8月 1997
    Gates                                              11 7月 1998
    Perkins                                            19 12月 1999
    Bell                                               4 2月 1996
    Everett                                            3 3月 1997
    McCain                                             1 7月 1998
    Jones                                              17 3月 1999
    Walsh                                              24 4月 1998
    Feeney                                             23 5月 1998
    OConnell                                           21 6月 1999
    Grant                                              13 1月 2000
    Whalen                                             17 9月 1987
    Hartstein                                          17 2月 1996
    Fay                                                17 8月 1997
    Mavris                                             7 6月 1994
    Baer                                               7 6月 1994
    Higgins                                            7 6月 1994
    Gietz                                              7 6月 1994
    
    已选择107行。
    
    

    TO_XXX函数

    TO_CHAR

    我们可以用TO_CHAR函数,将数值以特定的格式转化为字符串

    SELECT TO_CHAR(salary, '$99,999.00') SALARY
    FROM employees
    WHERE last_name = 'Ernst';
    
    

    这条语句是将salary按照美元,保留两位小数,保留,输出

    SALARY
    ----------------------
      $6,000.00
    
    

    TO_DATE

    我们可以用TO_DATE函数生成一个日期

    SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
    FROM employees
    WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');
    
    

    直接输入可能会出现“无效的月份”的提示,这是因为01-Jan-90的格式属于英文的日期,不属于中文的格式

    我们可以将回话语言改为英文,命令如下

    ALTER SESSION SET nls_date_language='american';
    
    

    输出如下

    LAST_NAME                                          TO_CHAR(HIRE_DATE,'DD-MON-YYYY')
    -------------------------------------------------- ----------------------------------------
    King                                               17-Jun-1987
    Kochhar                                            21-Sep-1989
    Whalen                                             17-Sep-1987
    
    

    通用函数

    和大多数编程语言一样,SQL支持嵌套函数

    SELECT last_name,
    NVL(TO_CHAR(manager_id), 'No Manager')
    FROM employees
    WHERE manager_id IS NULL;
    
    

    NVL(x,y)的含义是,如果x为空,则赋值为y,否则为x

    LAST_NAME                                          NVL(TO_CHAR(MANAGER_ID),'NOMANAGER')
    -------------------------------------------------- --------------------------------------------------------------------------------
    King                                               No Manager
    
    

    NVL的另一个例子

    SELECT last_name, salary, NVL(commission_pct, 0),
    (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
    FROM employees;
    
    

    输出如下

    LAST_NAME                                              SALARY NVL(COMMISSION_PCT,0)     AN_SAL
    -------------------------------------------------- ---------- --------------------- ----------
    King                                                    24000                     0     288000
    Kochhar                                                 17000                     0     204000
    De Haan                                                 17000                     0     204000
    Hunold                                                   9000                     0     108000
    Ernst                                                    6000                     0      72000
    Austin                                                   4800                     0      57600
    Pataballa                                                4800                     0      57600
    Lorentz                                                  4200                     0      50400
    Greenberg                                               12000                     0     144000
    Faviet                                                   9000                     0     108000
    Chen                                                     8200                     0      98400
    Sciarra                                                  7700                     0      92400
    Urman                                                    7800                     0      93600
    Popp                                                     6900                     0      82800
    Raphaely                                                11000                     0     132000
    Khoo                                                     3100                     0      37200
    Baida                                                    2900                     0      34800
    Tobias                                                   2800                     0      33600
    Himuro                                                   2600                     0      31200
    Colmenares                                               2500                     0      30000
    Weiss                                                    8000                     0      96000
    Fripp                                                    8200                     0      98400
    Kaufling                                                 7900                     0      94800
    Vollman                                                  6500                     0      78000
    Mourgos                                                  5800                     0      69600
    Nayer                                                    3200                     0      38400
    Mikkilineni                                              2700                     0      32400
    Landry                                                   2400                     0      28800
    Markle                                                   2200                     0      26400
    Bissot                                                   3300                     0      39600
    Atkinson                                                 2800                     0      33600
    Marlow                                                   2500                     0      30000
    Olson                                                    2100                     0      25200
    Mallin                                                   3300                     0      39600
    Rogers                                                   2900                     0      34800
    Gee                                                      2400                     0      28800
    Philtanker                                               2200                     0      26400
    Ladwig                                                   3600                     0      43200
    Stiles                                                   3200                     0      38400
    Seo                                                      2700                     0      32400
    Patel                                                    2500                     0      30000
    Rajs                                                     3500                     0      42000
    Davies                                                   3100                     0      37200
    Matos                                                    2600                     0      31200
    Vargas                                                   2500                     0      30000
    Russell                                                 14000                    .4     235200
    Partners                                                13500                    .3     210600
    Errazuriz                                               12000                    .3     187200
    Cambrault                                               11000                    .3     171600
    Zlotkey                                                 10500                    .2     151200
    Tucker                                                  10000                    .3     156000
    Bernstein                                                9500                   .25     142500
    Hall                                                     9000                   .25     135000
    Olsen                                                    8000                    .2     115200
    Cambrault                                                7500                    .2     108000
    Tuvault                                                  7000                   .15      96600
    King                                                    10000                   .35     162000
    Sully                                                    9500                   .35     153900
    McEwen                                                   9000                   .35     145800
    Smith                                                    8000                    .3     124800
    Doran                                                    7500                    .3     117000
    Sewall                                                   7000                   .25     105000
    Vishney                                                 10500                   .25     157500
    Greene                                                   9500                   .15     131100
    Marvins                                                  7200                    .1      95040
    Lee                                                      6800                    .1      89760
    Ande                                                     6400                    .1      84480
    Banda                                                    6200                    .1      81840
    Ozer                                                    11500                   .25     172500
    Bloom                                                   10000                    .2     144000
    Fox                                                      9600                    .2     138240
    Smith                                                    7400                   .15     102120
    Bates                                                    7300                   .15     100740
    Kumar                                                    6100                    .1      80520
    Abel                                                    11000                    .3     171600
    Hutton                                                   8800                   .25     132000
    Taylor                                                   8600                    .2     123840
    Livingston                                               8400                    .2     120960
    Grant                                                    7000                   .15      96600
    Johnson                                                  6200                    .1      81840
    Taylor                                                   3200                     0      38400
    Fleaur                                                   3100                     0      37200
    Sullivan                                                 2500                     0      30000
    Geoni                                                    2800                     0      33600
    Sarchand                                                 4200                     0      50400
    Bull                                                     4100                     0      49200
    Dellinger                                                3400                     0      40800
    Cabrio                                                   3000                     0      36000
    Chung                                                    3800                     0      45600
    Dilly                                                    3600                     0      43200
    Gates                                                    2900                     0      34800
    Perkins                                                  2500                     0      30000
    Bell                                                     4000                     0      48000
    Everett                                                  3900                     0      46800
    McCain                                                   3200                     0      38400
    Jones                                                    2800                     0      33600
    Walsh                                                    3100                     0      37200
    Feeney                                                   3000                     0      36000
    OConnell                                                 2600                     0      31200
    Grant                                                    2600                     0      31200
    Whalen                                                   4400                     0      52800
    Hartstein                                               13000                     0     156000
    Fay                                                      6000                     0      72000
    Mavris                                                   6500                     0      78000
    Baer                                                    10000                     0     120000
    Higgins                                                 12000                     0     144000
    Gietz                                                    8300                     0      99600
    
    已选择107行。
    
    

    NVL2

    NVL2(x,y,z)的含义是,如果x为NULL,则输出z,否则输出y

    SELECT last_name, salary, commission_pct,
    NVL2(commission_pct, 
    'SAL+COMM', 'SAL') income
    FROM employees WHERE department_id IN (50, 80);
    
    

    输出如下

    LAST_NAME                                              SALARY COMMISSION_PCT INCOME
    -------------------------------------------------- ---------- -------------- ----------------
    Weiss                                                    8000                SAL
    Fripp                                                    8200                SAL
    Kaufling                                                 7900                SAL
    Vollman                                                  6500                SAL
    Mourgos                                                  5800                SAL
    Nayer                                                    3200                SAL
    Mikkilineni                                              2700                SAL
    Landry                                                   2400                SAL
    Markle                                                   2200                SAL
    Bissot                                                   3300                SAL
    Atkinson                                                 2800                SAL
    Marlow                                                   2500                SAL
    Olson                                                    2100                SAL
    Mallin                                                   3300                SAL
    Rogers                                                   2900                SAL
    Gee                                                      2400                SAL
    Philtanker                                               2200                SAL
    Ladwig                                                   3600                SAL
    Stiles                                                   3200                SAL
    Seo                                                      2700                SAL
    Patel                                                    2500                SAL
    Rajs                                                     3500                SAL
    Davies                                                   3100                SAL
    Matos                                                    2600                SAL
    Vargas                                                   2500                SAL
    Russell                                                 14000             .4 SAL+COMM
    Partners                                                13500             .3 SAL+COMM
    Errazuriz                                               12000             .3 SAL+COMM
    Cambrault                                               11000             .3 SAL+COMM
    Zlotkey                                                 10500             .2 SAL+COMM
    Tucker                                                  10000             .3 SAL+COMM
    Bernstein                                                9500            .25 SAL+COMM
    Hall                                                     9000            .25 SAL+COMM
    Olsen                                                    8000             .2 SAL+COMM
    Cambrault                                                7500             .2 SAL+COMM
    Tuvault                                                  7000            .15 SAL+COMM
    King                                                    10000            .35 SAL+COMM
    Sully                                                    9500            .35 SAL+COMM
    McEwen                                                   9000            .35 SAL+COMM
    Smith                                                    8000             .3 SAL+COMM
    Doran                                                    7500             .3 SAL+COMM
    Sewall                                                   7000            .25 SAL+COMM
    Vishney                                                 10500            .25 SAL+COMM
    Greene                                                   9500            .15 SAL+COMM
    Marvins                                                  7200             .1 SAL+COMM
    Lee                                                      6800             .1 SAL+COMM
    Ande                                                     6400             .1 SAL+COMM
    Banda                                                    6200             .1 SAL+COMM
    Ozer                                                    11500            .25 SAL+COMM
    Bloom                                                   10000             .2 SAL+COMM
    Fox                                                      9600             .2 SAL+COMM
    Smith                                                    7400            .15 SAL+COMM
    Bates                                                    7300            .15 SAL+COMM
    Kumar                                                    6100             .1 SAL+COMM
    Abel                                                    11000             .3 SAL+COMM
    Hutton                                                   8800            .25 SAL+COMM
    Taylor                                                   8600             .2 SAL+COMM
    Livingston                                               8400             .2 SAL+COMM
    Johnson                                                  6200             .1 SAL+COMM
    Taylor                                                   3200                SAL
    Fleaur                                                   3100                SAL
    Sullivan                                                 2500                SAL
    Geoni                                                    2800                SAL
    Sarchand                                                 4200                SAL
    Bull                                                     4100                SAL
    Dellinger                                                3400                SAL
    Cabrio                                                   3000                SAL
    Chung                                                    3800                SAL
    Dilly                                                    3600                SAL
    Gates                                                    2900                SAL
    Perkins                                                  2500                SAL
    Bell                                                     4000                SAL
    Everett                                                  3900                SAL
    McCain                                                   3200                SAL
    Jones                                                    2800                SAL
    Walsh                                                    3100                SAL
    Feeney                                                   3000                SAL
    OConnell                                                 2600                SAL
    Grant                                                    2600                SAL
    
    已选择79行。
    
    

    NULLIF

    格式为NULLIF(x,y)

    如果两个表达式不相等,NULLIF 返回第一个 expression1 的值。

    如果两个表达式相等,NULLIF 返回NULL。

    SELECT first_name, LENGTH(first_name) "expr1", 
    last_name, LENGTH(last_name) "expr2",
    NULLIF(LENGTH(first_name), LENGTH(last_name)) result
    FROM employees;
    
    

    输出如下:

    FIRST_NAME                                    expr1 LAST_NAME                                               expr2     RESULT
    ---------------------------------------- ---------- -------------------------------------------------- ---------- ----------
    Ellen                                             5 Abel                                                        4          5
    Sundar                                            6 Ande                                                        4          6
    Mozhe                                             5 Atkinson                                                    8          5
    David                                             5 Austin                                                      6          5
    Hermann                                           7 Baer                                                        4          7
    Shelli                                            6 Baida                                                       5          6
    Amit                                              4 Banda                                                       5          4
    Elizabeth                                         9 Bates                                                       5          9
    Sarah                                             5 Bell                                                        4          5
    David                                             5 Bernstein                                                   9          5
    Laura                                             5 Bissot                                                      6          5
    Harrison                                          8 Bloom                                                       5          8
    Alexis                                            6 Bull                                                        4          6
    Anthony                                           7 Cabrio                                                      6          7
    Gerald                                            6 Cambrault                                                   9          6
    Nanette                                           7 Cambrault                                                   9          7
    John                                              4 Chen                                                        4
    Kelly                                             5 Chung                                                       5
    Karen                                             5 Colmenares                                                 10          5
    Curtis                                            6 Davies                                                      6
    Lex                                               3 De Haan                                                     7          3
    Julia                                             5 Dellinger                                                   9          5
    Jennifer                                          8 Dilly                                                       5          8
    Louise                                            6 Doran                                                       5          6
    Bruce                                             5 Ernst                                                       5
    Alberto                                           7 Errazuriz                                                   9          7
    Britney                                           7 Everett                                                     7
    Daniel                                            6 Faviet                                                      6
    Pat                                               3 Fay                                                         3
    Kevin                                             5 Feeney                                                      6          5
    Jean                                              4 Fleaur                                                      6          4
    Tayler                                            6 Fox                                                         3          6
    Adam                                              4 Fripp                                                       5          4
    Timothy                                           7 Gates                                                       5          7
    Ki                                                2 Gee                                                         3          2
    Girard                                            6 Geoni                                                       5          6
    William                                           7 Gietz                                                       5          7
    Douglas                                           7 Grant                                                       5          7
    Kimberely                                         9 Grant                                                       5          9
    Nancy                                             5 Greenberg                                                   9          5
    Danielle                                          8 Greene                                                      6          8
    Peter                                             5 Hall                                                        4          5
    Michael                                           7 Hartstein                                                   9          7
    Shelley                                           7 Higgins                                                     7
    Guy                                               3 Himuro                                                      6          3
    Alexander                                         9 Hunold                                                      6          9
    Alyssa                                            6 Hutton                                                      6
    Charles                                           7 Johnson                                                     7
    Vance                                             5 Jones                                                       5
    Payam                                             5 Kaufling                                                    8          5
    Alexander                                         9 Khoo                                                        4          9
    Janette                                           7 King                                                        4          7
    Steven                                            6 King                                                        4          6
    Neena                                             5 Kochhar                                                     7          5
    Sundita                                           7 Kumar                                                       5          7
    Renske                                            6 Ladwig                                                      6
    James                                             5 Landry                                                      6          5
    David                                             5 Lee                                                         3          5
    Jack                                              4 Livingston                                                 10          4
    Diana                                             5 Lorentz                                                     7          5
    Jason                                             5 Mallin                                                      6          5
    Steven                                            6 Markle                                                      6
    James                                             5 Marlow                                                      6          5
    Mattea                                            6 Marvins                                                     7          6
    Randall                                           7 Matos                                                       5          7
    Susan                                             5 Mavris                                                      6          5
    Samuel                                            6 McCain                                                      6
    Allan                                             5 McEwen                                                      6          5
    Irene                                             5 Mikkilineni                                                11          5
    Kevin                                             5 Mourgos                                                     7          5
    Julia                                             5 Nayer                                                       5
    Donald                                            6 OConnell                                                    8          6
    Christopher                                      11 Olsen                                                       5         11
    TJ                                                2 Olson                                                       5          2
    Lisa                                              4 Ozer                                                        4
    Karen                                             5 Partners                                                    8          5
    Valli                                             5 Pataballa                                                   9          5
    Joshua                                            6 Patel                                                       5          6
    Randall                                           7 Perkins                                                     7
    Hazel                                             5 Philtanker                                                 10          5
    Luis                                              4 Popp                                                        4
    Trenna                                            6 Rajs                                                        4          6
    Den                                               3 Raphaely                                                    8          3
    Michael                                           7 Rogers                                                      6          7
    John                                              4 Russell                                                     7          4
    Nandita                                           7 Sarchand                                                    8          7
    Ismael                                            6 Sciarra                                                     7          6
    John                                              4 Seo                                                         3          4
    Sarath                                            6 Sewall                                                      6
    Lindsey                                           7 Smith                                                       5          7
    William                                           7 Smith                                                       5          7
    Stephen                                           7 Stiles                                                      6          7
    Martha                                            6 Sullivan                                                    8          6
    Patrick                                           7 Sully                                                       5          7
    Jonathon                                          8 Taylor                                                      6          8
    Winston                                           7 Taylor                                                      6          7
    Sigal                                             5 Tobias                                                      6          5
    Peter                                             5 Tucker                                                      6          5
    Oliver                                            6 Tuvault                                                     7          6
    Jose Manuel                                      11 Urman                                                       5         11
    Peter                                             5 Vargas                                                      6          5
    Clara                                             5 Vishney                                                     7          5
    Shanta                                            6 Vollman                                                     7          6
    Alana                                             5 Walsh                                                       5
    Matthew                                           7 Weiss                                                       5          7
    Jennifer                                          8 Whalen                                                      6          8
    Eleni                                             5 Zlotkey                                                     7          5
    
    已选择107行。
    
    

    COALESCE

    COALESCE函数可以理解为支持多个参数的NVL函数

    SELECT last_name,
    COALESCE(commission_pct, salary, 10) comm
    FROM employees
    ORDER BY commission_pct;
    
    

    输出如下

    LAST_NAME                                                COMM
    -------------------------------------------------- ----------
    Lee                                                        .1
    Johnson                                                    .1
    Marvins                                                    .1
    Banda                                                      .1
    Kumar                                                      .1
    Ande                                                       .1
    Greene                                                    .15
    Grant                                                     .15
    Tuvault                                                   .15
    Bates                                                     .15
    Smith                                                     .15
    Taylor                                                     .2
    Bloom                                                      .2
    Fox                                                        .2
    Cambrault                                                  .2
    Livingston                                                 .2
    Zlotkey                                                    .2
    Olsen                                                      .2
    Sewall                                                    .25
    Hall                                                      .25
    Bernstein                                                 .25
    Vishney                                                   .25
    Hutton                                                    .25
    Ozer                                                      .25
    Abel                                                       .3
    Smith                                                      .3
    Partners                                                   .3
    Errazuriz                                                  .3
    Tucker                                                     .3
    Cambrault                                                  .3
    Doran                                                      .3
    King                                                      .35
    Sully                                                     .35
    McEwen                                                    .35
    Russell                                                    .4
    King                                                    24000
    Kochhar                                                 17000
    De Haan                                                 17000
    Hunold                                                   9000
    Ernst                                                    6000
    Austin                                                   4800
    Pataballa                                                4800
    Lorentz                                                  4200
    Greenberg                                               12000
    Faviet                                                   9000
    Chen                                                     8200
    Sciarra                                                  7700
    Urman                                                    7800
    Popp                                                     6900
    Raphaely                                                11000
    Khoo                                                     3100
    Baida                                                    2900
    Tobias                                                   2800
    Himuro                                                   2600
    Colmenares                                               2500
    Weiss                                                    8000
    Fripp                                                    8200
    Kaufling                                                 7900
    Vollman                                                  6500
    Mourgos                                                  5800
    Nayer                                                    3200
    Mikkilineni                                              2700
    Landry                                                   2400
    Markle                                                   2200
    Bissot                                                   3300
    Atkinson                                                 2800
    Marlow                                                   2500
    Olson                                                    2100
    Mallin                                                   3300
    Rogers                                                   2900
    Gee                                                      2400
    Philtanker                                               2200
    Ladwig                                                   3600
    Stiles                                                   3200
    Seo                                                      2700
    Patel                                                    2500
    Rajs                                                     3500
    Davies                                                   3100
    Matos                                                    2600
    Vargas                                                   2500
    Taylor                                                   3200
    Fleaur                                                   3100
    Sullivan                                                 2500
    Geoni                                                    2800
    Sarchand                                                 4200
    Bull                                                     4100
    Dellinger                                                3400
    Cabrio                                                   3000
    Chung                                                    3800
    Dilly                                                    3600
    Gates                                                    2900
    Perkins                                                  2500
    Bell                                                     4000
    Everett                                                  3900
    McCain                                                   3200
    Jones                                                    2800
    Walsh                                                    3100
    Feeney                                                   3000
    OConnell                                                 2600
    Grant                                                    2600
    Whalen                                                   4400
    Hartstein                                               13000
    Fay                                                      6000
    Mavris                                                   6500
    Baer                                                    10000
    Higgins                                                 12000
    Gietz                                                    8300
    
    已选择107行。
    
    

    条件表达式

    CASE

    和一般程序中的CASE语句类似

    SELECT last_name, job_id, salary,
    CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
    WHEN 'ST_CLERK' THEN 1.15*salary
    WHEN 'SA_REP' THEN 1.20*salary
    ELSE salary END "REVISED_SALARY"
    FROM employees;
    
    

    输出如下

    LAST_NAME                                          JOB_ID                   SALARY REVISED_SALARY
    -------------------------------------------------- -------------------- ---------- --------------
    King                                               AD_PRES                   24000          24000
    Kochhar                                            AD_VP                     17000          17000
    De Haan                                            AD_VP                     17000          17000
    Hunold                                             IT_PROG                    9000           9900
    Ernst                                              IT_PROG                    6000           6600
    Austin                                             IT_PROG                    4800           5280
    Pataballa                                          IT_PROG                    4800           5280
    Lorentz                                            IT_PROG                    4200           4620
    Greenberg                                          FI_MGR                    12000          12000
    Faviet                                             FI_ACCOUNT                 9000           9000
    Chen                                               FI_ACCOUNT                 8200           8200
    Sciarra                                            FI_ACCOUNT                 7700           7700
    Urman                                              FI_ACCOUNT                 7800           7800
    Popp                                               FI_ACCOUNT                 6900           6900
    Raphaely                                           PU_MAN                    11000          11000
    Khoo                                               PU_CLERK                   3100           3100
    Baida                                              PU_CLERK                   2900           2900
    Tobias                                             PU_CLERK                   2800           2800
    Himuro                                             PU_CLERK                   2600           2600
    Colmenares                                         PU_CLERK                   2500           2500
    Weiss                                              ST_MAN                     8000           8000
    Fripp                                              ST_MAN                     8200           8200
    Kaufling                                           ST_MAN                     7900           7900
    Vollman                                            ST_MAN                     6500           6500
    Mourgos                                            ST_MAN                     5800           5800
    Nayer                                              ST_CLERK                   3200           3680
    Mikkilineni                                        ST_CLERK                   2700           3105
    Landry                                             ST_CLERK                   2400           2760
    Markle                                             ST_CLERK                   2200           2530
    Bissot                                             ST_CLERK                   3300           3795
    Atkinson                                           ST_CLERK                   2800           3220
    Marlow                                             ST_CLERK                   2500           2875
    Olson                                              ST_CLERK                   2100           2415
    Mallin                                             ST_CLERK                   3300           3795
    Rogers                                             ST_CLERK                   2900           3335
    Gee                                                ST_CLERK                   2400           2760
    Philtanker                                         ST_CLERK                   2200           2530
    Ladwig                                             ST_CLERK                   3600           4140
    Stiles                                             ST_CLERK                   3200           3680
    Seo                                                ST_CLERK                   2700           3105
    Patel                                              ST_CLERK                   2500           2875
    Rajs                                               ST_CLERK                   3500           4025
    Davies                                             ST_CLERK                   3100           3565
    Matos                                              ST_CLERK                   2600           2990
    Vargas                                             ST_CLERK                   2500           2875
    Russell                                            SA_MAN                    14000          14000
    Partners                                           SA_MAN                    13500          13500
    Errazuriz                                          SA_MAN                    12000          12000
    Cambrault                                          SA_MAN                    11000          11000
    Zlotkey                                            SA_MAN                    10500          10500
    Tucker                                             SA_REP                    10000          12000
    Bernstein                                          SA_REP                     9500          11400
    Hall                                               SA_REP                     9000          10800
    Olsen                                              SA_REP                     8000           9600
    Cambrault                                          SA_REP                     7500           9000
    Tuvault                                            SA_REP                     7000           8400
    King                                               SA_REP                    10000          12000
    Sully                                              SA_REP                     9500          11400
    McEwen                                             SA_REP                     9000          10800
    Smith                                              SA_REP                     8000           9600
    Doran                                              SA_REP                     7500           9000
    Sewall                                             SA_REP                     7000           8400
    Vishney                                            SA_REP                    10500          12600
    Greene                                             SA_REP                     9500          11400
    Marvins                                            SA_REP                     7200           8640
    Lee                                                SA_REP                     6800           8160
    Ande                                               SA_REP                     6400           7680
    Banda                                              SA_REP                     6200           7440
    Ozer                                               SA_REP                    11500          13800
    Bloom                                              SA_REP                    10000          12000
    Fox                                                SA_REP                     9600          11520
    Smith                                              SA_REP                     7400           8880
    Bates                                              SA_REP                     7300           8760
    Kumar                                              SA_REP                     6100           7320
    Abel                                               SA_REP                    11000          13200
    Hutton                                             SA_REP                     8800          10560
    Taylor                                             SA_REP                     8600          10320
    Livingston                                         SA_REP                     8400          10080
    Grant                                              SA_REP                     7000           8400
    Johnson                                            SA_REP                     6200           7440
    Taylor                                             SH_CLERK                   3200           3200
    Fleaur                                             SH_CLERK                   3100           3100
    Sullivan                                           SH_CLERK                   2500           2500
    Geoni                                              SH_CLERK                   2800           2800
    Sarchand                                           SH_CLERK                   4200           4200
    Bull                                               SH_CLERK                   4100           4100
    Dellinger                                          SH_CLERK                   3400           3400
    Cabrio                                             SH_CLERK                   3000           3000
    Chung                                              SH_CLERK                   3800           3800
    Dilly                                              SH_CLERK                   3600           3600
    Gates                                              SH_CLERK                   2900           2900
    Perkins                                            SH_CLERK                   2500           2500
    Bell                                               SH_CLERK                   4000           4000
    Everett                                            SH_CLERK                   3900           3900
    McCain                                             SH_CLERK                   3200           3200
    Jones                                              SH_CLERK                   2800           2800
    Walsh                                              SH_CLERK                   3100           3100
    Feeney                                             SH_CLERK                   3000           3000
    OConnell                                           SH_CLERK                   2600           2600
    Grant                                              SH_CLERK                   2600           2600
    Whalen                                             AD_ASST                    4400           4400
    Hartstein                                          MK_MAN                    13000          13000
    Fay                                                MK_REP                     6000           6000
    Mavris                                             HR_REP                     6500           6500
    Baer                                               PR_REP                    10000          10000
    Higgins                                            AC_MGR                    12000          12000
    Gietz                                              AC_ACCOUNT                 8300           8300
    
    已选择107行。
    
    

    DECODE

    和CASE有一定的相似性

    SELECT last_name, job_id, salary,
    DECODE(job_id, 'IT_PROG', 1.10*salary,
    'ST_CLERK', 1.15*salary,
    'SA_REP', 1.20*salary,
    salary)
    REVISED_SALARY
    FROM employees;
    
    
    

    输出如下

    LAST_NAME                                          JOB_ID                   SALARY REVISED_SALARY
    -------------------------------------------------- -------------------- ---------- --------------
    King                                               AD_PRES                   24000          24000
    Kochhar                                            AD_VP                     17000          17000
    De Haan                                            AD_VP                     17000          17000
    Hunold                                             IT_PROG                    9000           9900
    Ernst                                              IT_PROG                    6000           6600
    Austin                                             IT_PROG                    4800           5280
    Pataballa                                          IT_PROG                    4800           5280
    Lorentz                                            IT_PROG                    4200           4620
    Greenberg                                          FI_MGR                    12000          12000
    Faviet                                             FI_ACCOUNT                 9000           9000
    Chen                                               FI_ACCOUNT                 8200           8200
    Sciarra                                            FI_ACCOUNT                 7700           7700
    Urman                                              FI_ACCOUNT                 7800           7800
    Popp                                               FI_ACCOUNT                 6900           6900
    Raphaely                                           PU_MAN                    11000          11000
    Khoo                                               PU_CLERK                   3100           3100
    Baida                                              PU_CLERK                   2900           2900
    Tobias                                             PU_CLERK                   2800           2800
    Himuro                                             PU_CLERK                   2600           2600
    Colmenares                                         PU_CLERK                   2500           2500
    Weiss                                              ST_MAN                     8000           8000
    Fripp                                              ST_MAN                     8200           8200
    Kaufling                                           ST_MAN                     7900           7900
    Vollman                                            ST_MAN                     6500           6500
    Mourgos                                            ST_MAN                     5800           5800
    Nayer                                              ST_CLERK                   3200           3680
    Mikkilineni                                        ST_CLERK                   2700           3105
    Landry                                             ST_CLERK                   2400           2760
    Markle                                             ST_CLERK                   2200           2530
    Bissot                                             ST_CLERK                   3300           3795
    Atkinson                                           ST_CLERK                   2800           3220
    Marlow                                             ST_CLERK                   2500           2875
    Olson                                              ST_CLERK                   2100           2415
    Mallin                                             ST_CLERK                   3300           3795
    Rogers                                             ST_CLERK                   2900           3335
    Gee                                                ST_CLERK                   2400           2760
    Philtanker                                         ST_CLERK                   2200           2530
    Ladwig                                             ST_CLERK                   3600           4140
    Stiles                                             ST_CLERK                   3200           3680
    Seo                                                ST_CLERK                   2700           3105
    Patel                                              ST_CLERK                   2500           2875
    Rajs                                               ST_CLERK                   3500           4025
    Davies                                             ST_CLERK                   3100           3565
    Matos                                              ST_CLERK                   2600           2990
    Vargas                                             ST_CLERK                   2500           2875
    Russell                                            SA_MAN                    14000          14000
    Partners                                           SA_MAN                    13500          13500
    Errazuriz                                          SA_MAN                    12000          12000
    Cambrault                                          SA_MAN                    11000          11000
    Zlotkey                                            SA_MAN                    10500          10500
    Tucker                                             SA_REP                    10000          12000
    Bernstein                                          SA_REP                     9500          11400
    Hall                                               SA_REP                     9000          10800
    Olsen                                              SA_REP                     8000           9600
    Cambrault                                          SA_REP                     7500           9000
    Tuvault                                            SA_REP                     7000           8400
    King                                               SA_REP                    10000          12000
    Sully                                              SA_REP                     9500          11400
    McEwen                                             SA_REP                     9000          10800
    Smith                                              SA_REP                     8000           9600
    Doran                                              SA_REP                     7500           9000
    Sewall                                             SA_REP                     7000           8400
    Vishney                                            SA_REP                    10500          12600
    Greene                                             SA_REP                     9500          11400
    Marvins                                            SA_REP                     7200           8640
    Lee                                                SA_REP                     6800           8160
    Ande                                               SA_REP                     6400           7680
    Banda                                              SA_REP                     6200           7440
    Ozer                                               SA_REP                    11500          13800
    Bloom                                              SA_REP                    10000          12000
    Fox                                                SA_REP                     9600          11520
    Smith                                              SA_REP                     7400           8880
    Bates                                              SA_REP                     7300           8760
    Kumar                                              SA_REP                     6100           7320
    Abel                                               SA_REP                    11000          13200
    Hutton                                             SA_REP                     8800          10560
    Taylor                                             SA_REP                     8600          10320
    Livingston                                         SA_REP                     8400          10080
    Grant                                              SA_REP                     7000           8400
    Johnson                                            SA_REP                     6200           7440
    Taylor                                             SH_CLERK                   3200           3200
    Fleaur                                             SH_CLERK                   3100           3100
    Sullivan                                           SH_CLERK                   2500           2500
    Geoni                                              SH_CLERK                   2800           2800
    Sarchand                                           SH_CLERK                   4200           4200
    Bull                                               SH_CLERK                   4100           4100
    Dellinger                                          SH_CLERK                   3400           3400
    Cabrio                                             SH_CLERK                   3000           3000
    Chung                                              SH_CLERK                   3800           3800
    Dilly                                              SH_CLERK                   3600           3600
    Gates                                              SH_CLERK                   2900           2900
    Perkins                                            SH_CLERK                   2500           2500
    Bell                                               SH_CLERK                   4000           4000
    Everett                                            SH_CLERK                   3900           3900
    McCain                                             SH_CLERK                   3200           3200
    Jones                                              SH_CLERK                   2800           2800
    Walsh                                              SH_CLERK                   3100           3100
    Feeney                                             SH_CLERK                   3000           3000
    OConnell                                           SH_CLERK                   2600           2600
    Grant                                              SH_CLERK                   2600           2600
    Whalen                                             AD_ASST                    4400           4400
    Hartstein                                          MK_MAN                    13000          13000
    Fay                                                MK_REP                     6000           6000
    Mavris                                             HR_REP                     6500           6500
    Baer                                               PR_REP                    10000          10000
    Higgins                                            AC_MGR                    12000          12000
    Gietz                                              AC_ACCOUNT                 8300           8300
    
    已选择107行。
    
    
  • 相关阅读:
    封装简单的mvc框架
    php中date函数获取当前时间的时区误差解决办法
    PHP中date函数参数详解
    PHP中字符串补齐为定长
    php将xml文件转化为数组:simplexml_load_string
    PHP基于变量的引用实现的树状结构
    EcShop后台添加菜单[步骤]
    Cmd批处理语法实例
    Mysql语句的批量操作[修改]
    HTML前端技术(JS的使用,包括数组和字符串)
  • 原文地址:https://www.cnblogs.com/alphainf/p/16793766.html
Copyright © 2020-2023  润新知