Oracle函數--單行字符串函數

 
函數是一種有零個或多個參數並且有一個返回值的程序
在SQL中Oracle內建了一系列函數  被稱爲SQL或PL/SQL語句
主要分爲兩大類: 單行函數  組函數  

1. 單行函數

字符、數字、日期、轉換、混合型 等多種函數 用於處理單行數據  統稱單行函數

均可用於SELECT WHERE ORDER BY 等子句中

也可以在其他語句中使用 如update的SET子句  INSERT的VALUES子句  DELET的WHERE子句

單行字符串函數用於操作字符串數據  大多數有一個或多個參數  絕大多數返回字符串

(1) NULL和單行函數

     NULL值表示一個未知數據或者一個空值

    算術操作符的任何一個操作數爲NULL值 結果均爲NULL值

    只有CONCAT  DECODE  DUMP  NVL  REPLACE 在調用了NULL參數時能夠返回非NULL值

    NVL函數時最重要的  直接處理NULL值

    NVL有兩個參數:NVL(x1,x2)  x1和x2都式表達式  當x1爲null時返回X2,否則返回x1

   ( 不是簡單加起來 如果某一行是null值 那麼結果就將是null  要使用nvl函數來排除null值的影響

      update empset salary=(salary+nvl(bonus,0)*1.1 )

(2) ASCII(' '): 

                  String 是一字符串 返回String 第一個字母的ASCII碼 : 逆函數是CHR()
                  SELECT ASCII(''A'') FROM table_name

(3) chr(<i>):

                  i 是一個數字 函數返回十進制表示的字符

                  SELECT CHR(65) FROM table_name

(4) concat( 'String1' , 'String2' ) :

                  String1, String2 均爲字符串 將String1連接到String2後

      String1爲Null 返回String2 String2爲Null 返回String1 均爲Null 返回Null

(5) initcap( 'string1' , 'string2' .'string3')

                  String爲字符串

      將每個單詞的第一個字母大寫 其他字母小寫返回 

      單詞由空格 控制字符 標點符號限制

                  SELECT INITCAP( 'string1' , 'string2' ) FROM table_name

 (6) instr( 'String1' ,'S', i , j ):

                  String1, String2爲字符串 i, j爲整數

      返回String2在String1中第j次出現的位置 搜索從String1的第i個字符開始

      當無需要字符返回0

                  若i爲負 搜索從右向左 但位置計算仍從左向右 i,j缺省爲1

      SELECT INSTR('Miss', 'i', 1, 3) FROM table_name

      instrb(String1, String2, i, j)

                  與instr() 相似 返回字節 對於單字節instrb()=instr()

 (7) length(String1)

                  String1爲字符串 返回String1的長度

                  如果String1爲null 返回null值

      select length('Tianjin University') from table  ==> 18

     lengthb()

                  與length()相似 返回字節

 (8) lower(String)

                  返回String的小寫字符 常出現在where子串中

      select * from table 

                  where lower(productfamily_no) like '%d6288_1%' 

                  返回所有轉換成小寫形式爲"d6288_1"(即在DB中是"D6288_1"或"d6288_1"形式的)

 (9) upper(String)

                 返回String的大寫 常出現在where子串中 與lower(String)

       select productfamily_no from table

                 where upper(productfamily_no) like'%D6288_1%'

(10) lpad('String1', i,'String2')

                  i爲整數 在String1左側 用String2字符串 補足 致長度 i, 可重複多次

                  若i小於String1的長度 只返回 i 那麼長的String1字符 其他的被截去

      String2的缺省值爲單空格 

                 select lpad('Yes',2,'No') from table   ==>"Ye"

                 select lpad('Yes',4,'No') from table  ==>"NYes"

                 select lpad('Yes',5,'No') from table  ==>"NoYes"

             select lpad('Yes',7,'No') from table  ==>"NoNoYes"

(11) rtrim('String1', 'String2')

                 將String1最右邊的字符去掉 使其後第一個字符不在String2中

       若無String2, 那麼String1不會改變

                 select lpad('Yes','No') from table  ==>"Yes"

                 select lpad('Yes','sNo') from table  ==>"Ye"

                 select lpad('Yes','seNo') from table  ==>"Y"

                 select lpad('Yes','yesNo') from table   ==>"Y"

                 select lpad('Yes','YesNo') from table   ==>" "

(12) replace('String1','String2','String3')

                 String1, String2, String3都是字符串

       函數用String3代替出現在String1中的String2後返回

                 select repalce('YesNO', 'NO', 'No') from table ==>"YesNo"

(13) substr('String1', i, j)

                 String1爲字符串, i, j爲整數

                 從String1的第 i 位開始返回長度爲 j 的字符串

       如果 j 爲空 則直到串的尾部

       select substr('YesNo', 2, 3) from table  ==>"esN"

        substrb('String1', i, j)

                 與substr相似 只是 i, j以字節計算

(14) soundex('String1')

                 返回與String1發音相同的詞

       select soundex('Yes')  yes, soundex('No') no from table

(15) translate('String1', 'String2', 'String3')

                 將String1與String2相同的字符以String3代替

                 select translate('Yos', 'o', 'e') from table ==>"Yes"

(16) trim( leading| trailing| both 'trim_character' from ' trim_source ')

                 若無其他參數 返回去掉前後空格的"trim_source"

                 否則返回處理好的"trim_source"

                 select trim(leading 'Y' from 'YesYesY') from table ==>"esYesY"

                 select trim(trailing 'Y' from 'YesYesY') from table ==>"YesYes"

                 select trim(both 'Y' from 'YesYesY') from table ==> "esYes" 

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