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

來源:互聯網
上載者:User

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

       首先便是這Trim函數。Trim 函數具有刪除任意指定字元的功能,而去除字串首尾空格則是trim函數被使用頻率最高的一種。文法Trim ( string ) ,參數string:string類型,指定要刪除首部和尾部空格的字串傳回值String。函數執行成功時返回刪除了string字串首部和尾部空格的字串,發生錯誤時返回Null 字元串("")。 如果參數值為null時,會拋出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函數效率會更高。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.