LTRIM、RTRIM和TRIM在ORACLE中的用法:
1、LTRIM(C1,C2)
其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等。這是第一個和SQL SERVER不一樣的地方。如果記得不錯的話SQL Server的LTRIM只有一個參數,作用是去掉字符串左面的空格。而Oracle的LTRIM則是保證C1的第一個字符不能出現在C2字符串中。
SQL> select LTRIM( 'Miss Liu', 'Liu') Result from dual;
RESULT
--------
Miss Liu
SQL> select LTRIM( 'Miss Liu', 'M is') result from dual;
RES
---
Liu
從上述就可以看出LTRIM的作用。但是如果第二個字符串不進行輸入,那么LTRIM的作用和SQL SERVER中就相同,就是去掉左面的空格。
SQL> select ltrim( ' Miss Liu ' ) result from dual;
RESULT
----------
Miss Liu
SQL> select length( ' Miss Liu ' ) len1, length( ltrim( ' Miss Liu ' ) ) lentrim from dual;
LEN1 LENTRIM
---------- ----------
12 10
由上述可以看出Oracle的LTrim的功能應該更強大一些,能夠對前導符進行操作。
2、RTRIM的功用和LTRIM相同,但是RTRIM修改成了從右向左的,這樣子就是去掉后導符中的特定字符。
3、TRIM的功能如下描述:
In Oracle/PLSQL, the trim function removes all specified characters either from the beginning or the ending of a string.
The syntax for the trim function is:
trim( [ leading | trailing | both [ trim_character ] ] string1 )
leading - remove trim_string from the front of string1.
trailing - remove trim_string from the end of string1.
both - remove trim_string from the front and end of string1.
If none of these are chosen (ie: leading, trailing, both), the trim function will remove trim_string from both the front and end of string1.
trim_character is the character that will be removed from string1. If this parameter is omitted, the trim function will remove all leading and trailing spaces from string1.
string1 is the string to trim.
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
如果提到TRIM函數,最簡單的功能就是使用它來去除字符串的行首和行尾的空格,這個功能也是大家使用頻率最高的一種。
然而TRIM函數其實是具有刪除“任意指定”字符的功能,不可謂不牛。我們來一次體驗之旅。
1.先看一下TRIM函數的完整語法描述
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
以上語法引自於Oracle 10gR2官方文檔:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/img_text/trim.htm
單從這個語法定義上我們就可以看出,小小的TRIM函數蘊含了更多可定制的功能。一一展示,供參考。
2.最簡單的用法開始
不使用任何參數:
sec@ora10g> select trim (' SECOOLER ') "TRIM e.g." from dual;
TRIM e.g
--------
SECOOLER
這也是最常見的一種使用方法,都使用默認的參數,默認情況下TRIM會同時刪除字符串前后出現的空格。
3.其實第一種常用的方法等同於下面帶有“BOTH”參數的寫法
sec@ora10g> select trim (both from ' SECOOLER ') "TRIM e.g." from dual;
TRIM e.g
--------
SECOOLER
“BOTH”參數表示同時去除字符串前后所指定的內容(默認情況下刪除空格)。
4.既然試用了BOTH參數,我們再看一下“TRAILING”和“LEADING”參數效果
sec@ora10g> select trim (trailing from ' SECOOLER ') "TRIM e.g." from dual;
TRIM e.g.
------------
SECOOLER
sec@ora10g> select trim (leading from ' SECOOLER ') "TRIM e.g." from dual;
TRIM e.g.
------------
SECOOLER
可見,使用“TRAILING”參數可以完成字符串尾部空格的刪除功能;而“LEADING”參數正好相反,完成字符串頭部空格的刪除功能。
也就是說,使用“TRAILING”和“LEADING”參數可以指定空格的刪除位置。
5.“trim_character”參數粉墨登場
這個參數改變了“刪除空格”的默認行為。
如果想要刪除字符串'xxxxSECOOLERxxxx'前后出現的“x”,“trim_character”參數就派上用場了。
sec@ora10g> select trim ('x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;
TRIM e.g
--------
SECOOLER
配合“BOTH”、“TRAILING”和“LEADING”三個參數使用效果如下,與之前演示類似。看結果,不贅述。
sec@ora10g> select trim (both 'x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;
TRIM e.g
--------
SECOOLER
sec@ora10g> select trim (trailing 'x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;
TRIM e.g.
------------
xxxxSECOOLER
sec@ora10g> select trim (leading 'x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;
TRIM e.g.
------------
SECOOLERxxxx
6.需要注意的地方
這里的“trim_character”參數只允許包含一個字符,不支持多字符。
報錯信息如下:
sec@ora10g> select trim (leading 'xy' from 'xyxxSECOOLERxyyx') "TRIM e.g." from dual;
select trim (leading 'xy' from 'xyxxSECOOLERxyyx') "TRIM e.g." from dual
*
ERROR at line 1:
ORA-30001: trim set should have only one character
既然TRIM不能滿足我們刪除只剩“SECOOLER”字符串的要求,有么有其他手段呢?of course有。我們使用RTRIM和LTRIM“連環拳”完成這個任務。
1)使用RTRIM
sec@ora10g> select rtrim('xyxxSECOOLERxyyx','xy') "e.g." from dual;
e.g.
------------
xyxxSECOOLER
2)使用LTRIM
sec@ora10g> select ltrim('xyxxSECOOLERxyyx','xy') "e.g." from dual;
e.g.
------------
SECOOLERxyyx
3)聯合使用RTRIM和LTRIM函數達到我們的目的
sec@ora10g> select ltrim(rtrim('xyxxSECOOLERxyyx','xy'),'xy') "e.g." from dual;
e.g.
--------
SECOOLER
使用RTRIM和LTRIM函數時的注意事項:“xy”不表示整個“xy”字符串進行匹配,而是發現任意的字符“x”或字符“y”均做刪除操作。
7.小結
在感受Oracle函數帶來便利的同時,建議對每一個常用函數都追本溯源地探究一下,也許在嘗試之后您會發現:哦,原來大家經常用到這些方法只是其真實功能的滄海一粟
轉自:http://www.2cto.com/database/201208/147087.html