文字列の左右の空白文字を削除する(前後の空白文字を削除する)

syntax

TRIM ( string )
TRIM ( trim_char FROM string )
TRIM ( [ LEADING | TRAILING | BOTH ] trim_char FROM string ) 標準SQL
return [ varchar2 ]

parameter

trim_char削除したい文字(1文字)
stringサプレスしたい対象の文字列
LEADINGTRAILINGBOTHサプレス操作オプション

return

  • サプレスしたい対象の文字列から文字 trim_char を削除した文字列

サプレスという用語の誤用

avail

  • SQL および PL/SQL の両方で使用可能。

サプレス操作オプション

オプション処理内容
LEADING文字列 string から先行する trim_char 文字をサプレス
TRAILING文字列 string から後続の trim_char 文字をサプレス
BOTH先行、および、後続する trim_char 文字をサプレス

TRIM 関数の内容

文字列 string 中の左右(前後)の双方から文字を探索し削除したい文字 trim_char に該当する場合に、その文字を削除(サプレス)していく。

TRIM( string ) の構文でサプレスされる文字は半角のスペース(' ') に固定される。
文字列がすべてサプレスされたしまったときは NULL 値 になる。

TRIM ( string ) 形式の使用例

見やすくするために半角スペースを('_')、全角スペースを('△') にしている。

SQL> select str, TRIM(str) from trim_sample;
 
STR                        TRIM(STR)
-------------------------- --------------------------------
___あいう___               あいう
__文中にも空____白__       文中にも空____白
△全角のスペース△         △全角のスペース△

TRIM ( BOTH trim_char FROM string ) 形式の使用例

SQL> set null '<NULL>'
SQL> select c, str, TRIM(BOTH c FROM str) from trim_sample;
 
C        STR                        TRIM(BOTHCFROMSTR)
-------- -------------------------- -----------------------
_        ___あいう___               あいう
_        __文中にも空____白__       文中にも空____白
_        △全角のスペース△         △全角のスペース△
△       △全角のスペース△         全角のスペース
X        XXXをサプレスXXX          Xをサプレス
<NULL>   trim_char が'NULL'         <NULL>

TRIM(string) とスペースをサプレスする 標準SQL の TRIM(' ' FROM string) と TRIM(BOTH ' ' FROM string) は同じ処理内容である。

同様に LTRIM 関数 および RTRIM 関数 もそれぞれ TRIM(LEADING ' ' FROM string) と TRIM(TRAILING ' ' FROM string) と同じようにみえる・・・が、
しかし、LTRIM、RTRIM 関数ともにサプレスする文字が1文字ではなく文字列(複数文字)をオプションで指定できる点が異なる。

TRIM 関数の応用例

組み込まれている SQL関数 TRIM で全角スペースと半角スペースの混在した状態をサプレスすることができない。

TRIM_MULTI ファンクション(半角全角、複数文字対応の TRIM) ユーザ定義関数

TRIM 関数は半角だけ、全角だけと個々単独で TRIM は可能であるが半角と全角が交互にあった場合には 2回の TRIM でも削除できない場合がある。
以下の関数で複数の文字列を TRIM に指定することが可能(デフォルト:半角と全角のスペースの TRIM)

CREATE OR REPLACE FUNCTION RIVUS.TRIM_MULTI(
	P_STR VARCHAR2,
	P_TRIM_CHARS IN VARCHAR2 := '  '
)
RETURN VARCHAR2
IS
BEGIN
	RETURN LTRIM(RTRIM(P_STR, P_TRIM_CHARS), P_TRIM_CHARS);
END;
/
-- 全角スペースと半角スペースがデフォルト削除対象
----  わかりづらいので 全角スペースを □ 半角スペースを _ で表現
SELECT TRIM_MULTI('□_□aabb_□_') FROM DUAL ;  
⇒ 'aabb'
-- A の大文字小文字、全角半角を削除する場合
SELECT TRIM_MULTI('AAaBcdaaAAAA', 'aaAA') FROM DUAL ;
⇒ 'Bcd'


SQL 関数 - TRIM 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー