文字列の左右の空白文字を削除する(前後の空白文字を削除する)
TRIM ( string )
TRIM ( trim_char FROM string )
TRIM ( [ LEADING | TRAILING | BOTH ] trim_char FROM string )
return [ varchar2 ]
trim_char | 削除したい文字(1文字) |
string | サプレスしたい対象の文字列 |
LEADING 、TRAILING 、BOTH | サプレス操作オプション |
- サプレスしたい対象の文字列から文字 trim_char を削除した文字列
サプレスという用語の誤用
サプレス操作オプション
オプション | 処理内容 |
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 関連