標籤:http 使用 資料 for ar line amp htm
在oracle資料庫中,trim一般都是用在刪除字串兩邊的空格。實際上,trim也可以用來刪除字串兩邊的指定字元。並且trim指定刪除的字串只能是單個字元
Oracle TRIM函數是很常見的函數,下面對Oracle TRIM函數的文法作了詳盡的闡述說明,希望可以讓您對Oracle TRIM函數有更深的認識。
如果提到Oracle TRIM函數,最簡單的功能就是使用它來去除字串的行首和行尾的空格,這個功能也是大家使用頻率最高的一種。
然而Oracle TRIM函數其實是具有刪除“任意指定”字元的功能,不可謂不牛。我們來一次體驗之旅。
1.先看一下Oracle TRIM函數的完整文法描述
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
以上文法引自於Oracle 10gR2官方文檔:http://download.oracle.com/docs/ ... 0/img_text/trim.htm
單從這個文法定義上我們就可以看出,小小的Oracle TRIM函數蘊含了更多可定製的功能。一一展示,供參考。
2.最簡單的用法開始
不使用任何參數:
[email protected]> select trim (‘ DWEYE ‘) "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
這也是最常見的一種使用方法,都使用預設的參數,預設情況下TRIM會同時刪除字串前後出現的空格。
3.其實第一種常用的方法等同於下面帶有“BOTH”參數的寫法
[email protected]> select trim (both from ‘ DWEYE ‘) "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
“BOTH”參數表示同時去除字串前後所指定的內容(預設情況下刪除空格)。
4.既然試用了BOTH參數,我們再看一下“TRAILING”和“LEADING”參數效果
[email protected]> select trim (trailing from ‘ DWEYE ‘) "TRIM e.g." from dual;
TRIM e.g.
------------
DWEYE
[email protected]> 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”參數就派上用場了。
[email protected]> select trim (‘x‘ from ‘xxxxDWEYExxxx‘) "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
配合“BOTH”、“TRAILING”和“LEADING”三個參數使用效果如下,與之前示範類似。看結果,不贅述。
[email protected]> select trim (both ‘x‘ from ‘xxxxDWEYExxxx‘) "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
[email protected]> select trim (trailing ‘x‘ from ‘xxxxDWEYExxxx‘) "TRIM e.g." from dual;
TRIM e.g.
------------
xxxxDWEYE
[email protected]> select trim (leading ‘x‘ from ‘xxxxDWEYExxxx‘) "TRIM e.g." from dual;
TRIM e.g.
------------
DWEYExxxx
6.需要注意的地方
這裡的“trim_character”參數只允許包含一個字元,不支援多字元。
報錯資訊如下:
[email protected]> 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
[email protected]> select rtrim(‘xyxxDWEYExyyx‘,‘xy‘) "e.g." from dual;
e.g.
------------
xyxxDWEYE
2)使用LTRIM
[email protected]> select ltrim(‘xyxxDWEYExyyx‘,‘xy‘) "e.g." from dual;
e.g.
------------
DWEYExyyx
3)聯合使用RTRIM和LTRIM函數達到我們的目的
[email protected]> select ltrim(rtrim(‘xyxxDWEYExyyx‘,‘xy‘),‘xy‘) "e.g." from dual;
e.g.
--------
DWEYE
使用RTRIM和LTRIM函數時的注意事項:“xy”不表示整個“xy”字串進行匹配,而是發現任意的字元“x”或字元“y”均做刪除操作。
7.小結
在感受Oracle函數帶來便利的同時,建議對每一個常用函數都追本溯源地探究一下,也許在嘗試之後您會發現:哦,原來大家經常用到這些方法只是其真實功能的滄海一粟。
以下是其它網友的補充:
如 trim(‘字元1‘ from ‘字串2‘) ,字元1隻能是單個字元。
1. trim()刪除字串兩邊的空格。
2. ltrim()刪除字串左邊的空格。
3. rtrim()刪除字串右邊的空格。
4. trim(‘字元1‘ from ‘字串2‘) 分別從字元2串的兩邊開始,刪除指定的字元1。
5. trim([leading | trailing | both] trim_char from string) 從字串String中刪除指定的字元trim_char。
leading:從字串的頭開始刪除。
trailing:從字串的尾部開始刪除。
borth:從字串的兩邊刪除。
6. tim()只能刪除半形空格。
For example:
trim(‘ tech ‘) would return ‘tech‘;
trim(‘ ‘ from ‘ tech ‘) would return ‘tech‘;
trim(leading ‘0‘ from ‘000123‘) would return ‘123‘;
trim(trailing ‘1‘ from ‘Tech1‘) would return ‘Tech‘;
trim(both ‘1‘ from ‘123Tech111‘) would return ‘23Tech‘;
oracle中的trim函數
Oracle中的trim函數是用來刪除給定字串或者給定數字中的頭部或者尾部的給定字元。
trim函數具有如下的形式
trim([leading/trailing/both][匹配字串或數值][from][需要被處理的字串或數值])
這裡如果指明了leading表示從刪除頭部匹配的字串,如果指明了trailing表示從刪除尾部匹配的字串,如果指明了both,或者不指明任何位置,則兩端都將被刪除
如果不指明任何匹配字串或數值則認為是空格,即刪除前面或者後面的空格。
trim函數返回的類型是varchar2
下面是一些例子:
截去了數字7500的後面的兩個0
SQL> select trim(0 from 7500) from dual;
TRIM
—-
75
下面的例子截去了‘ 中秋八月中‘前後的兩個‘中‘字
SQL> select trim(‘中‘ from ‘中秋八月中‘) as 詩 from dual;
詩
——————
秋八月
下面的例子截去了‘ 半夜二更半‘前面的一個‘半‘字
SQL> select trim(leading ‘半‘ from ‘半夜二更半‘) as 詩 from dual;
詩
————————
夜二更半