(轉)oracle中如何對字符串進行去除空格的方法


今天學習了一下oracle中如何對字符串進行去除空格的方法,這里總結一下。了解到的方法主要有兩種:Trim函數以及Replace函數。下面我詳細的介紹一下,這兩種用法,不足的地方還望各位朋友補充。

       首先便是這Trim函數。Trim 函數具有刪除任意指定字符的功能,而去除字符串首尾空格則是trim函數被使用頻率最高的一種。語法Trim ( string ) ,參數string:string類型,指定要刪除首部和尾部空格的字符串返回值String。函數執行成功時返回刪除了string字符串首部和尾部空格的字符串,發生錯誤時返回空字符串("")。 如果參數值為null時,會拋出空指針異常。在oracle中,trim使用的形式多為人rtrim()與ltrim()兩種,分別為去除字符串右邊空格與去除字符串左邊空格。

       當然trim的功能不止如此,下面進行細致的介紹,這里我多以去除字符串空格為例。

我們看下trim函數的語法描述:trim( [ {  {leading|trailing|both}  [trim_character]|trim_character}  from] trim_source

1)、不使用任何參數

SQL> select trim('   11   ') aa from dual;

AA
--
11

這是最常見的一種使用方法,都使用默認的參數,默認情況下TRIM會同時刪除字符串前后出現的空格。

2)、使用both參數,效果等同於方法一不使用任何參數

SQL> select trim(both from '   11   ') aa from dual;

AA
--
11

“BOTH”參數表示同時去除字符串前后所指定的內容(默認情況下刪除空格)。

3)、使用leading與trailing參數

SQL> select trim(leading from '   11  ') aa from dual;

AA
----
11

SQL> select trim(trailing from '   11  ') aa from dual;

AA
-----
   11
從結果中得分隔符'-',可以發現使用leading參數可以去除字符串右端的空格,而trailing參數則可以去除字符串左端的空格。正如oracle提供的rtrim()與ltrim()。

4)、使用trim_character參數

trim_character參數改變了“刪除空格”的默認行為。如果想要刪除字符串'xxxxWORLDxxxx'前后出現的“x”,“trim_character”參數就派上用場了。

SQL> select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;

AAAAA
-----
WORLD

trim_character配合“both”、“trailing”和“leading”三個參數使用效果如下,與之前演示類似。看結果,不贅述。

SQL> select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;

AAAAA
-----
WORLD

SQL> select trim(both 'x' from 'xxxxWORLDxxxx') aaaaa from dual;

AAAAA
-----
WORLD

SQL> select trim(trailing 'x' from 'xxxxWORLDxxxx') aaaaa from dual;

AAAAA
---------
xxxxWORLD

SQL> select trim(leading 'x' from 'xxxxWORLDxxxx') aaaaa from dual;

AAAAA
---------
WORLDxxxx

       必須注意的一點是這里的“trim_character”參數只允許包含一個字符,不支持多字符。trim不能滿足我們去除多字符要求,但是我們可以使用rtrim和ltrim來處理。
1)使用rtrim

SQL> select rtrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;

AAAAA
---------------
ORxxxxWORLDxxxx
2)使用ltrim

SQL> select ltrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;

AAAAA
---------------
xxxxWORLDxxxxOR
3)聯合使用RTRIM和LTRIM函數達到我們的目的
SQL> select rtrim(ltrim('ORxxxxWORLDxxxxOR','OR'),'OR') aaaaa from dual;

AAAAA
-------------
xxxxWORLDxxxx

使用rtrim和ltrim函數時的注意事項:“OR”不表示整個“OR”字符串進行匹配,而是發現任意的字符“O”或字符“R”均做刪除操作。

       對於trim函數的應用就介紹到,下面介紹一下replace函數,個人覺得replace函數在去空格時更好用。replace 函數用第三個表達式替換第一個字符串表達式中出現的所有第二個給定字符串表達式。來看下replace函數的語法描述:replace('string_replace1','string_replace2','string_replace3')  

'string_replace1' 待搜索的字符串表達式,string_replace1 可以是字符數據或二進制數據。

'string_replace2' 待查找的字符串表達式,string_replace2 可以是字符數據或二進制數據。

'string_replace3' 替換用的字符串表達式,string_replace3 可以是字符數據或二進制數據。

返回類型,如果 string_replace(1、2 或 3)是支持的字符數據類型之一,則返回字符數據;如果 string_replace(1、2 或 3)是支持的 binary 數據類型之一,則返回二進制數據。

       這里我們依然以去空格為例。

SQL> select replace('   aa  kk  ',' ','') abcd from dual;

ABCD
----
aakk

       與使用trim函數的結果進行對比,我們可以發現,使用replace函數不僅可以去除字符串兩端的空格,也可去除字符串內部的空格。

       當然,如果只是要去除字符串兩端的空格,使用trim函數效率會更高。


免責聲明!

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



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