Oracle(三)——————-單行函數

來源:互聯網
上載者:User

總是覺得自己寫的oracle筆記特別垃圾,可是有說不清該怎麼去寫,有建議的告訴一聲啊,本人在此謝過啦!Sql函數分為兩種:單行函數、多行函數單行函數:操作資料對象接受參數返回一個結果只對一行進行變換每行返回一個結果可以轉換資料類型可以嵌套參數可以是一列或一個值單行函數可以分為:字元函數:                   大小寫控制函數【LOWER、UPPER、 INITCAP】                            SQL>select lower('REDY') from dual;LOWER('                                                                        -------                                                                        red                                                                         SQL> select upper('red') from dual;UPPER('                                                                        -------                                                                        REDY                                                                         SQL> select initcap('red') from dual;INITCAP                                                                        -------                                                                        Red         字元控制函數【CONCAT、SUBSTR、LENGTH、INSTR、LPAD|RPAD、TRIM、REPLACE】                            函數                                結果                            CONCAT('Hello', 'World')          HelloWorldSUBSTR('HelloWorld',1,5)          HelloLENGTH('HelloWorld')                                  10INSTR('HelloWorld', 'W')           6(W出現的位置)LPAD(salary,10,'*')                              *****24000RPAD(salary, 10, '*')                            24000*****TRIM('H' FROM'HelloWorld')           elloWorld(去除的是首字母的H)         數字函數                   ROUND  四捨五入SQL> select round(45.3213,2) from dual;ROUND(45.3213,2)                                                               ----------------                                                                         45.32                    TRUNC     截斷SQL> select trunc(45.926,2) from dual;TRUNC(45.926,2)                                                                 ---------------                                                                                45.92                     MOD     求餘SQL> select mod(1600,300) from dual;MOD(1600,300)                                                                   -------------                                                                                 100註:DUAL 是一個‘偽表’,可以用來測試函數和運算式日期:Oracle 中的日期型資料實際含有兩個值: 日期和時間。預設的日期格式是 DD-MON-RR.  函數SYSDATE 返回:日期時間日期的數學運算:l  在日期上加上或減去一個數字結果仍為日期。l  兩個日期相減返回日期之間相差的天數。l  可以用數字除24來向日期中加上或減去小時。Months_between  兩個日期相差的月數SQL> selectmonths_between('1-10月-90','2-4月-90') from dual;MONTHS_BETWEEN('1-10月-90','2-4月-90')                                         --------------------------------------                                                                     5.96774194Add_months      向指定日期中加上若干月數SQL> selectadd_months(sysdate,2) from dual;ADD_MONTHS(SYS                                                                 --------------                                                                 13-5月 -12Next_day         指定日期的下一個日期SQL> selectnext_day(sysdate,'星期二') from dual;NEXT_DAY(SYSDA                                                                 --------------                                                                 20-3月 -12Last_day         本月的最後一個日期SQL> selectlast_day(sysdate) from dual;LAST_DAY(SYSDA                                                                 --------------                                                                 31-3月 -12Round           日期四捨五入SQL> selectround(sysdate) from dual;ROUND(SYSDATE)                                                                 --------------                                                                  13-3月 -12Trunk            日期截斷SQL> selecttrunc(sysdate,'MONTH') from dual;TRUNC(SYSDATE,                                                                 --------------                                                                 01-3月 -12 轉換函式:隱形:Oracle自動完成的轉換顯示:TO_CHAR 函數對日期的轉換格式:l  必須包含在單引號中而且大小寫敏感。l  可以包含任意的有效日期格式。l  日期之間用逗號隔開。SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;TO_CHAR(SY                                                                     ----------                                                                     2012-03-13 TO_CHAR 函數對數位轉換下面是在TO_CHAR 函數中經常使用的幾種格式:9----------數字0-----------零$-----------美元符L---------本地貨幣符號.--------小數點,--------千位符SQL> select to_char('2430', '$99,999.00') from dual;TO_CHAR('24                                                                    -----------                                                                                $2,430.00 【            SQL> selectto_char('1200032432430', '$99,999.00') from dual;TO_CHAR('12                                                                    -----------                                                                     ########### 如果出現上述這種情況,那說明第一個參數太長了】l  使用 TO_NUMBER 函數將字元轉換成數字:SQL> select to_number('123','99,999') from dual;TO_NUMBER('123','99,999')                                                      -------------------------                                                                            123 l  使用 TO_DATE 函數將字元轉換成日期:SQL> select to_date('1992-3-4','yyyy/mm/dd') from dual;TO_DATE('1992-                                                                 --------------                                                                 04-3月 -92通用函數:這些函數適用於任何資料類型,同時也適用於空值:l  NVL (expr1, expr2)l  將空值轉換成一個已知的值:l  可以使用的資料類型有日期、字元、數字。l  函數的一般形式:l  NVL(commission_pct,0)l  NVL(hire_date,'01-JAN-97')l  NVL(job_id,'No Job Yet')l  NVL2 (expr1, expr2, expr3)l  NULLIF (expr1, expr2)l  COALESCE (expr1, expr2, ..., exprn) SQL> select nvl2(comm,comm,0) from emp;NVL2(COMM,COMM,0)                                                               -----------------                                                                              0                                                                            300                                                                            500                                                                              0                                                                          1400                                                               SQL> selectlength(first_name),length(last_name),nullif(length(first_name),length(last_name))from employees;LENGTH(FIRST_NAME)LENGTH(LAST_NAME)                                            -----------------------------------                                           NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   --------------------------------------------                                                   7                 9                                                                                     7                                                                                                                                   4                 4                                                                                                                                                                                                                          5                 5       使用 COALESCE 函數l  COALESCE 與 NVL 相比的優點在於 COALESCE 可以同時處理交替的多個值。l  如果第一個運算式為空白,則返回下一個運算式,對其他的參數進行COALESCE 。                 SQL> select coalesce(comm,10) from emp;COALESCE(COMM,10)                                                              -----------------                                                                             10                                                                            300                                                                            500                                                                             10                                                                          1400 條件運算式在SQL語句中使用if—then—else邏輯使用兩種方法:Case運算式SQL> selectlast_name,job_id,salary,2  case job_id when 'IT_PRDG'then 1.10*salary         3  when'ST_CLERK' then 1.15*salary         4  when'SA_REP' then 1.20*salary        5  else salary end "REVISED_SALARY"         6  from employees;Decode函數           1 select last_name,job_id,salary,          2  decode(job_id,'IT_PRDG', 1.10*SALARY,      3 'ST_CLERK',1.15*salary,  4  'SA_REP',1.20*salary,salary)  5* revised_salary fromemployees嵌套函數單行函數可以嵌套。嵌套函數的執行順序是由內到外。SQL> selectlast_name,nvl(to_char(manager_id),'No Manager') from employees where manager_idis null;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.