【函式】Oracle TRIM函式語法介紹

散葉涔發表於2012-04-22

Oracle TRIM函式是很常見的函式,下面對TRIM函式的語法作了詳盡的闡述說明,希望可以讓您對Oracle TRIM函式有更深的認識。

如果提到Oracle TRIM函式,最簡單的功能就是使用它來去除字串的行首和行尾的空格,這個功能也是大家使用頻率最高的一種。
然而Oracle TRIM函式其實是具有刪除“任意指定”字元的功能,不可謂不牛。我們來一次體驗之旅。

1.先看一下Oracle TRIM函式的完整語法描述
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)

以上語法引自於Oracle 10gR2官方文件: ... 0/img_text/trim.htm
單從這個語法定義上我們就可以看出,小小的Oracle TRIM函式蘊含了更多可定製的功能。一一展示,供參考。

2.最簡單的用法開始
不使用任何引數:
gloria@ select trim (' DWEYE ')   "TRIM e.g."  from dual;

TRIM e.g
--------
DWEYE

這也是最常見的一種使用方法,都使用預設的引數,預設情況下TRIM會同時刪除字串前後出現的空格。

3.其實第一種常用的方法等同於下面帶有“BOTH”引數的寫法
gloria@ select trim (both from ' DWEYE ')  "TRIM e.g."  from dual;

TRIM e.g
--------
DWEYE

“BOTH”參數列示同時去除字串前後所指定的內容(預設情況下刪除空格)。

4.既然試用了BOTH引數,我們再看一下“TRAILING”和“LEADING”引數效果
gloria@ select trim (trailing from ' DWEYE ')  "TRIM e.g."  from dual;

TRIM e.g.
------------
DWEYE

gloria@ select trim (leading from ' DWEYE ') "TRIM e.g." from dual;

TRIM e.g.
------------
DWEYE

可見,使用“TRAILING”引數可以完成字串尾部空格的刪除功能;而“LEADING”引數正好相反,完成字串頭部空格的刪除功能。
也就是說,使用“TRAILING”和“LEADING”引數可以指定空格的刪除位置。

5.“trim_character”引數粉墨登場
這個引數改變了“刪除空格”的預設行為。
如果想要刪除字串'xxxxDWEYExxxx'前後出現的“x”,“trim_character”引數就派上用場了。
gloria@ select trim ('x' from 'xxxxDWEYExxxx')  "TRIM e.g."   from dual;

TRIM e.g
--------
DWEYE

配合“BOTH”、“TRAILING”和“LEADING”三個引數使用效果如下,與之前演示類似。看結果,不贅述。
gloria@ select trim (both 'x' from 'xxxxDWEYExxxx')  "TRIM e.g."  from dual;

TRIM e.g
--------
DWEYE

gloria@ select trim (trailing 'x' from 'xxxxDWEYExxxx')   "TRIM e.g."  from dual;

TRIM e.g.
------------
xxxxDWEYE

gloria@ select trim (leading 'x' from 'xxxxDWEYExxxx')  "TRIM e.g."   from dual;

TRIM e.g.
------------
DWEYExxxx

6.需要注意的地方
這裡的“trim_character”引數只允許包含一個字元,不支援多字元。
報錯資訊如下:
gloria@ select trim (leading 'xy' from 'xyxxDWEYExyyx')  "TRIM e.g."  from dual;
select trim (leading 'xy' from 'xyxxDWEYExyyx')  "TRIM e.g."  from dual
*
ERROR at line 1:
ORA-30001: trim set should have only one character

既然TRIM不能滿足我們刪除只剩“DWEYE”字串的要求,有麼有其他手段呢?of course有。我們使用RTRIM和LTRIM“連環拳”完成這個任務。
1)使用RTRIM
gloria@ select rtrim('xyxxDWEYExyyx','xy')  "e.g."  from dual;

e.g.
------------
xyxxDWEYE

2)使用LTRIM
gloria@ select ltrim('xyxxDWEYExyyx','xy')   "e.g."  from dual;

e.g.
------------
DWEYExyyx

3)聯合使用RTRIM和LTRIM函式達到我們的目的
gloria@ select ltrim(rtrim('xyxxDWEYExyyx','xy'),'xy')   "e.g."   from dual;

e.g.
--------
DWEYE

使用RTRIM和LTRIM函式時的注意事項:“xy”不表示整個“xy”字串進行匹配,而是發現任意的字元“x”或字元“y”均做刪除操作。

7.小結
在感受Oracle函式帶來便利的同時,建議對每一個常用函式都追本溯源地探究一下,也許在嘗試之後您會發現:哦,原來大家經常用到這些方法只是其真實功能的滄海一粟。

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

相關文章