Oracle字串函式

wzhalal發表於2013-07-02

Oracle字串函式


平常我們用Oracle主要有兩種字串型別
1.char始終為固定的長度,如果設定了長度小於char列的值,則Oracle會自動用空格填充的。當比較char時,Oracle用空格將其填充為等長,再進行比較。
2.VarChar2資料型別為可變長度,雖然與VarChar資料型別是同義的,但在今後的Oracle版本中也許會有變化,所以應該避免使用VarChar,優先使用VarChar2。
固定長度的字串欄位使用Char,而其他所有的字串欄位都應使用VarChar2.

下面列出部分Oracle針對字串操作的一些函式,以下函式可以使用在字串上,也可以使用在列名上:
1.LOWER(string) 將輸入的字串轉換成小寫
2.UPPER(string) 將輸入的字串轉換成大寫
3.INITCAP(string) 將輸入的字串單詞的首字母轉換成大寫。PS:如果不是兩個字母連在一起,則認為是新的單詞,例:a_b a,b  a b  類似前面這些情況,都a和b都會轉換成大寫
4.連線符(||),將兩個字串用||連線起來,除此之外還可以使用Concat函式來連線字串。例:select CONCAT(City,country) from Table
5.LPAD和RPAD,填充函式,這是兩個十分相似的函式,使用方式完全一樣。允許在列的左[右]邊填充一組字元。例:RPAD(city,20,'.'),如果ciy的值沒有小於長度20的話,則用'.'在右邊補齊,補到20個,如果是用空格補齊,看上去就是像左對齊一樣。
6.LTRIM,RTRIM和TRIM,他們的作用是從字串的左邊,右邊,左右兩邊刪除不需要的字元,預設時刪除空格。
格式:RTRIM、LTRIM(字串,'刪除字符集') 第一個引數就是要進行刪除的字元,第二個引數是一個字符集來的,如果填寫的是'AB',Oracle會認為是A和B,然後反覆檢查字串的右端,直到字串中的每個字元都被刪除了,也就是說,直到遇到被刪除字符集中未出現的第一個字元時,才停止刪除。這樣講可能有點不是很明白,看下面例子
原資料
1 AAA.
2 AAA."
3 AA.AAB
RTRIM(name,'.B"')
1 AAA
2 AAA
3 AA.AA
如果覺得不夠明白的話,自己試多幾次就明白了!我也覺得講得好像不是很清楚一樣!
TRIM格式有點不一樣,直接看例子吧 select trim('A' from 列名) from tableName 或者trim(leading 'A' from 列名)或者trim(trailing 'A' from 列名) 等價於LTRIM和RTRIM函式一樣,其實TRIM函式就只是為了簡化程式碼而以。
7.LENGTH 該函式很簡單,就是告訴使用者一個字串有多長,即字串中有多少個字元,該函式本身並不是很好用,但可以做為其它函式的一部分,用於計算表格需要多少空格,或者做為orderby 子句的一部分。PS:您不能對一個使用LONG資料型別的列使用LENGTH之類的函式。
8.SUBSTR(string,start [,count]) 該函式告訴oracle提取出string一個子集,start開始位置,count提取長度,不指定count時,預設提取到該字串的尾部。
  start同時也可以指定為負數,指定為正數的時候是從字串的起始位置開始算(左邊),指定負數時,是從末尾位置算(右邊)。PS:負數不能使用於Char資料型別,因為Char是固定長度的,   所以將使用空格填充他們的值,直到擴充套件到列的全長。
9.INSTR 返回指定的字串所在的位置
  INSTR(string,set[,start [,occurrence ] ] ) 如果指定start,oracle則跳過前面所有字串到該位置開始搜尋,occurence,是強迫instr跳過前幾次與字串匹配,給出下一次匹配的位置,如果occurence指定3,那就是匹配第三次的位置了。 例 instr('ABACAAA','A',2,2) 從ABACAAA中匹配A這個字串,從2個位置開始匹配,匹配第2次A所在的位置。PS:如果set中不止有一個字元而是有幾個字元組成的,則INSTR給出該字符集中的第一個字元的位置。
10.Chr和ascii函式在即席查詢中很少使用。Chr把數值轉換成等價的ascii字串 例:select chr(70) from dual
        ascii函式執行的結果剛好是相反的,傳遞給他字串,它將轉換成對應的數值(只轉換第一個字串),如果需要同時轉換多個字串可以使用DUMP函式DUMP(string)

PS:INSTR,REPLACE和SUBSTR的功能已經得到擴充套件,可以支援正規表示式。

通過以上函式可以單獨使用或者組合使用,這是一個簡單的過程,即將簡單的邏輯步驟組合起來完成非常複雜的任務。

後續應該還會有一些Oracle方面的日誌記錄吧。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28894640/viewspace-765338/,如需轉載,請註明出處,否則將追究法律責任。

相關文章