探究TRIM函數
Oracle TRIM函數,最簡單的功能就是使用它來去除字串的行首和行尾的空格,這個功能也是大家使用頻率最高的一種。
然而Oracle TRIM函數其實是具有刪除“任意指定”字元的功能。
1.先看一下Oracle TRIM函數的完整文法描述
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
2.不適用任何參數
SQL> select trim(' helle,redcat ') "greeting"
2 from dual;
greeting
------------
helle,redcat
這是最常見的一種使用方法,都使用預設的參數,預設情況下TRIM會同時刪除字串前後出現的空格。
等同於下面帶有“BOTH”參數的寫法
SQL> select trim(both from ' hello,redcat ') "greeting"
2 from dual
3 ;
greeting
------------
hello,redcat
“BOTH”參數表示同時去除字串前後所指定的內容(預設情況下刪除空格)。
“TRAILING”參數可以完成字串尾部空格的刪除功能。
“LEADING”參數正好相反,完成字串頭部空格的刪除功能。
3.“trim_character” 參數改變了“刪除空格”的預設行為。
trim刪除兩邊指定的字元
SQL> select trim('s' from 'sssshello,redcatsss') "greeting"
2 from dual;
greeting
------------
hello,redcat
同上
SQL> select trim(both 's' from 'ssshello,redcatsss') "greeting"
2 from dual;
greeting
------------
hello,redcat
leading刪除字串頭部指定字元
SQL> select trim(leading 's' from 'ssshello,redcatsss') "greeting"
2 from dual;
greeting
---------------
hello,redcatsss
trailing刪除字串尾部指定字元
SQL> select trim(trailing 's' from 'ssshello,redcatsss') "greeting"
2 from dual;
greeting
---------------
ssshello,redcat
以上只能刪除指定單個字元,錯誤資訊ORA-30001: trim set should have only one character若要刪除多個,則需要用以下方法。
4.使用RTRIM和LTRIM“連環拳”刪除指定多字元
ltrim刪除字串左邊指定的字元
SQL> select ltrim('sasaashello,redcatsaassa','sa') "greeting"
2 from dual;
greeting
------------------
hello,redcatsaassa
rtrim刪除字串右邊指定的字元
SQL> select rtrim('sasaashello,redcatsaassa','sa') "greeting"
2 from dual;
greeting
------------------
sasaashello,redcat
ltrim 和rtrim聯合使用達到我們的目的
SQL> select ltrim(rtrim('sasaashello,redcatsaassa','sa'),'sa') "greeting"
2 from dual;
greeting
------------
hello,redcat
使用RTRIM和LTRIM函數時的注意事項:“xy”不表示整個“xy”字串進行匹配,而是發現任意的字元“x”或字元“y”均做刪除操作。
5. 感悟
一個小小的函數能找出這麼多功能,嘿嘿,小小發現。