Oracle常用函數

 

 

Oracle常用函數

1、NVL()函數

         語法:NVL(expr1, expr2)

含義:如果expr1的計算結果爲null值,則NVL()返回expr2。如果expr1的計算結果不是null值,則返回 

     expr1.expr1expr2可以是任意一種數據類型。如果expr1expr2的結果皆爲null值,則NVL()返回 

            null

         返回值類型:字符型、日期型、日期時間型、數值型、貨幣型、邏輯型或null值。

      Eg1: select nvl(o.bill_aud_flag,'0'from order_item o;

 

2、NVL2()函數

          語法:NVL(expr1,expr2,expr3)

含義:如果expr1的計算結果爲null值,則NVL()返回expr3,如果expr1的計算結果不爲null值,則返

          回expr2.

 Eg1: select ename,sal,comm,nvl2(comm,'sal+comm','sal') income from emp;

 

3、NULLIF()函數

          語法:NULLIF(expr1,expr2)

          含義:如果expr1expr2相等,則返回NULL,否則返回expr1.

          注意:expr1不能爲null,否則會報錯.

       Eg1: select ename,sal,comm,nullif(sal,comm ) result from emp;

 

4、DECODE()函數

          語法:decode(value,value1,result1,value2,result2,default_result)

含義:如果valuevalue1相等,則返回result1,如果valuevalue2相等,則返回result2,否

          則返回default_result.

 Eg1: select decode(o.service_offer_id,'50040001','新裝','50040002','退租','其它'as 

      登記事項 from order_item o;

 

5、instr()函數

          語法:instr(string1,string2[,start_position[,nth_appearance]])

 含義:string1à源字符串,要在此字符串中查找。string2à要在string1中查找的字符. 

      start_positionà代表從string1的哪個位置開始查找。此參數可選,如果省略默認爲1.

            字符串索引從1開始。如果此參數爲正,從左到右開始檢索,如果此參數爲負,從右到左

         檢索,返回要查找的字符串在源字符串中的開始索引。nth_appearanceà代表要查找第幾

         次出現的string2此參數可選,如果省略,默認爲 1.如果爲負數系統會報錯。

        注意:如果string2string1中沒有找到,instr函數返回0.

      Eg1: select instr('123,456,789','1234'fromdual;-- 0

     select instr('123,456,789','12'fromdual;-- 1

     select instr('123,456,789','123'fromdual;-- 1

     select instr('123,456,789','789'fromdual;-- 9

6、substr()函數

          語法:substr( string, start_position, [length] )

 含義:stringà源字符串,要在此字符串中查找。start_positionà代表從string的哪個位置

          開始查找。如果此參數爲正,從左到右開始檢索,如果此參數爲負,從右到左檢索。  

            length可選參數,如果爲空,代表查找到的整個字符串,如果不爲空,代表位數。

       Eg1: select substr('This is a test'62from dual; -- is

      select substr('This is a test'6from dual;-- is a test

      select substr('This is a test'0from dual;-- This is a test

      select substr('This is a test', -0from dual; -- This is a test

      select substr('TechOnTheNet', -33from dual; -- Net

      select substr('TechOnTheNet', -63from dual; -- The

      select substr('TechOnTheNet', -503from dual;-- 返回空

 

        7、  replace()函數

            語法:replace (char, search_string, [replace_str] )

            含義:char:等待替換的字符串,search_string:搜索需要替換的字符串,replace_str替換

                     字符串。如果replace_str缺省或者爲null,那麼所有char中出現的search_string

                     將被移除,如果search_stringnull,那麼結果就是char

                Eg1: select replace('acdd','cd','ef') from dual; --> aefd

                select replace('acdd','cd','') from dual; --> ad

                select replace('acdd','ef') from dual; -->acdd

                select replace('acdd','','') from dual; -->acdd

              注意:replace()函數是字符串級別的替代

 

        8、  translate()函數

            語法:replace (char,from_string,to_string)

   含義:返回將(所有出現的)from_string中的每個字符都替換爲to_string中的相應字符以

            後的char,如果from_stringto_string長,那麼在 from_string中而不to_string

        中的額外字符將從char中被刪除,因爲它們沒有相應的替換字符。to_string不能空。

             Oracle 將空字符串解釋爲null,並且如果translate中的任何參數爲null,那麼結果

             也是null

        Eg1: select translate('qwertyuiop','qwert','12345') from dual; --12345yuiop

            select translate('qwertyuiop','qwert','1234567') from dual;-12345yuiop

            select translate('qwertyuiop','qwertyuiop','1234567') from dual; -- 1234567

       select translate('qwertyuiop','qwertyui','') from dual; -- 爲空

       select translate('qwertyuiop','qwertyui',null) from dual; -- 爲空

          注意:translate ()函數是字符級別的替代.

 

        9、lower()函數

           語法:lower('AaBbCcDd')

  含義:返回字符串,並將所有的字符小寫

  Eg1: select lower('AaBbCcDd') from dual;  -- aabbccdd

 

    10、upper()函數

             語法:upper('AaBbCcDd')

    含義:返回字符串,並將所有的字符大寫

    Eg1: select lower('AaBbCcDd') from dual;  -- AABBCCDD

 

    11、add_months ()函數

            語法:add_months(DATE,NUMBER)

   含義:ADD_MONTHS函數在輸入日期上加上指定的幾個月返回一個新的日期。如果給出

            一負數,返回日期之前幾個月日期。add_months (DATE,NUMBER)中的NUMBER

            當是整數,給出小數時,正數被截爲小於該數的最大整數,負數被截爲大於該數的

            最小整數。

       Eg1:  select sysdate from dual;  -- 2014/7/24 15:32:54

       select add_months(sysdate,2.9) from dual; -- 2014/9/24 15:32:54

       select add_months(sysdate,2.1) from dual; -- 2014/9/24 15:32:54

       select add_months(sysdate,-2.9) from dual; -- 2014/5/24 15:32:54

       select add_months(sysdate,-2.1) from dual;-- 2014/5/24 15:32:54

 

    12、concat ()函數

         語法:concat(string1,string2)

 含義:concat只能連接兩個字符串,連接多個需要嵌套調用不方便,用“||”可以直接連接多個字符串

Eg1: select concat('aa','bb') from dual;  -- aabb

select concat('aa','bb','cc') from dual;-- 有錯,只能連接兩個

select 'aa'||'bb'||'cc' from dual;   -- aabbcc

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章