[Oracle]TRIM/RTRIM/LTRIM関数

カテゴリ:

以下、KROWN#40912からの引用。

RTRIM(char [,set]) は charの右側にあって'set'に指定された すべての文字を削除したものを返します。 (LTRIMは左側から削除したものを返します) Oracle 8iから使用できるようになったTRIM関数(ANSI SQL92準拠)は パラメータの指定により "右側からの削除"/"左側からの削除"/"両方からの削除" を行えます。 但し、RTRIM(LTRIM)が取り除く文字に複数の文字を指定できるのに対して TRIM関数は1つの文字しか指定する事ができません。

RTRIM/LTRIM/TRIMの動作は上記の通りですが、
文章では分かりにくいので以下のテーブルに対するSQL文の結果を交えて説明します。

SQL> select * from test;

COL1 COL2
---------- --------------------
1 aaabaaabaaa
2 axabaaabaxa

----------------------------------------------------------------------
例 1: LTRIM と TRIM LEADING
----------------------------------------------------------------------
取り除く文字に1文字だけ指定するのであれば、LTRIMとTRIM LEADINGは
同じ結果になります。

SQL> select col1, ltrim(col2,'a') "LTRIM" from test;
SQL> select col1, trim(leading 'a' from col2) "TRIM" from test;
COL1 LTRIM
---------- -------------------- 元データ
1 baaabaaa <-----------------aaabaaabaaa
~~~
2 xabaaabaxa <-----------------axabaaabaxa
~
----------------------------------------------------------------------
例 2: RTRIM と TRIM TRAILING
----------------------------------------------------------------------
取り除く文字に1文字だけ指定するのであれば、RTRIMとTRIM TRAILINGは
同じ結果になります。

SQL> select col1, rtrim(col2,'a') "RTRIM" from test;
SQL> select col1, trim(trailing 'a' from col2) "TRIM" from test;

COL1 RTRIM
---------- -------------------- 元データ
1 aaabaaab <-----------------aaabaaabaaa
~~~
2 axabaaabax <-----------------axabaaabaxa
~
----------------------------------------------------------------------
例 3: LTRIM + RTRIM と TRIM BOTH
----------------------------------------------------------------------
取り除く文字に1文字だけ指定するのであれば、RTRIMとLTRIMの組み合わせと
TRIM BOTH(default)は同じ結果になります。

SQL> select col1, ltrim(rtrim(col2,'a'),'a') "LTRIM(RTRIM)" from test;
SQL> select col1, trim(both 'a' from col2) "TRIM" from test;
SQL> select col1, trim('a' from col2) "TRIM" from test;

COL1 LTRIM(RTRIM)
---------- -------------------- 元データ
1 baaab <-----------------aaabaaabaaa
~~~ ~~~
2 xabaaabax <-----------------axabaaabaxa
~ ~
----------------------------------------------------------------------
例 4: LTRIM と RTRIM について
----------------------------------------------------------------------
RTRIM(LTRIM)では、取り除く文字に複数の文字を指定する事ができます。
この処理をTRIMで実現する事はできません。

SQL> select col1, rtrim(col2,'ab') from test;

COL1 RTRIM(COL2,'AB')
---------- -------------------- 元データ
1 <-----------------aaabaaabaaa
~~~~~~~~~~~
2 axabaaabax <-----------------axabaaabaxa
~

[参考資料]
『Oracle9i SQLリファレンス リリース1(J04117-01)』
『Oracle8i SQLリファレンス Vol.1 (J00923-01)』

Twitter

購読

New Comment

Tag Cloud

広告

広告

Calendar