Oracle學習筆記:刪除數據空格(trim、ltrim、rtrim函數)


刪除空格

數據庫中有時候數據不規范引起莫名的錯誤,可能是由於數據字段前后存在空格引起的。因此有必要對字段進行刪除空格操作。

  • 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

主要看從左(右)是否有匹配字符集,開始去除,直到無法匹配為止。

參考鏈接1:SQL 刪除數據空格(Trim、RTrim、LTrim函數)

參考鏈接2:oracle中trim,ltrim,rtrim函數用法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM