刪除空格
數據庫中有時候數據不規范引起莫名的錯誤,可能是由於數據字段前后存在空格引起的。因此有必要對字段進行刪除空格操作。
trim()
函數:刪除數據左右兩邊(開頭和結尾處)的空格rtrim()
函數:刪除數據右邊(結尾處)的空格ltrim()
函數:刪除數據左邊(開頭處)的空格
注意:trim()、rtrim()、ltrim()
函數不僅可以用於 select
語句中,還可以用於 where
等語句中。
select trim(' abc ') from dual; -- abc
select rtrim(' abc ') from dual; -- abc
select ltrim(' abc ') from dual; -- abc
刪除特殊字符
另外,trim/ltrim/rtrim
函數還有特殊用法,可以去除指定的字符。
trim()
函數:只能去除單個字符rtrim()
ltrim()
函數:可以去除多個字符
trim 語法
select trim(leading|trailing|both string1 from string2)
from dual;
表示字符串 string2 去除前面|后面|前后面(leading|trailing|both)的字符 string1,默認去除方式為 both。
select trim(leading 'd' from 'dfadsdd') from dual; -- fadsdd
select trim(trailing 'd' from 'dfadsdd') from dual; -- dfads
select trim(both 'd' from 'dfadsdd') from dual; -- fads
select trim('d' from 'dfadsdd') from dual; -- fads
注:trim 去除字符只能是單個字符,如果要去除的字符為字符集則報錯。例如:
select trim(trailing '12' from '123dasdf12') from dual;
-- ORA-30001: 截取集僅能有一個字符
ltrim、rtrim 語法
select ltrim(string1, string2) from dual;
select rtrim(string1, string2) from dual;
表示字符串 string1 去除前面與 string2 字符集匹配的,若無匹配則結束返回。
rtrim 與 ltrim 類似,只是去除的是右邊算起匹配的字符。
select rtrim('aaaaaaminb', 'main') from dual; -- aaaaaaminb
-- 由於從右邊算起,第一個字母是'b'沒有與'main'匹配的字符,因此返回結果仍是'aaaaminb'
select rtrim('aaaaminb', 'mainb') from dual; -- 返回為空
select ltrim('ccbcminb', 'cb') from dual; -- minb
主要看從左(右)是否有匹配字符集,開始去除,直到無法匹配為止。