trim関数 / rtrim関数 / ltrim関数

広告

trim関数は文字列の前後から指定した文字を削除するために使用します。書式は次の通りです。

trim(文字列)
trim(文字列, 文字)

trim関数の主な目的は指定した文字列の先頭や最後に付いている空白文字を取り除くために使用します。具体的には文字列の先頭が空白文字だった場合に空白文字でない文字が現れるまでの空白文字を全て取り除きます。また同じように文字列の最後が空白文字だった場合に、文字の先頭に向かって空白文字ではない文字が現れるまで空白文字を全て取り除きます。

具体的には次のように使用します。

select trim(' Good Bye!   ');    /* 'Good Bye!' */

文字列の先頭及び最後から空白文字を取り除きますが、文字列の中に現れる空白文字は取り除きません。

なお2番目の引数に文字を指定した場合、空白文字ではなく2番目の引数に指定した文字を文字列の前後から削除します。

具体的には次のように使用します。

select trim('  ..Good Bye!..', '.');    /* '  ..Good Bye!' */

文字の先頭または最後から文字'.'が連続して現れていた場合に'.'の文字を取り除きます。

同じ目的で使用される関数にrtrim関数とltrim関数があります。rtrim関数は文字列の最後から指定した文字を削除するために使用します。書式は次の通りです。

rtrim(文字列)
rtrim(文字列, 文字)

ltrim関数は文字列の先頭から指定した文字を削除するために使用します。書式は次の通りです。

ltrim(文字列)
ltrim(文字列, 文字)

どちらの関数も2番目の引数を省略した場合は空白文字を削除します。2番目の引数に文字を指定した場合は、指定した文字を削除します。

具体的には次のように使用します。

select trim(' Good Bye!   ');    /* 'Good Bye!' */
select rtrim(' Good Bye!   ');   /* ' Good Bye!' */
select ltrim(' Good Bye!   ');   /* 'Good Bye!   ' */

rtrim関数は文字列の最後だけ、ltrim関数は文字列の先頭だけ、trim関数は文字列の先頭と最後から指定の文字を取り除きます。

また下記のようにカラムを指定した場合は、カラムに格納されている値の前後から指定の文字を取り除きます。

create table goods(id integer, name text);

select trim(name) from goods;

このSELECT文では「name」カラムに含まれる値の前後に空白文字が含まれている場合に空白を取り除いた値を取得します。

サンプル

では実際に試してみます。

select
quote(trim(' Good Bye!   ')) as trim, 
quote(rtrim(' Good Bye!   ')) as rtrim,
quote(ltrim(' Good Bye!   ')) as ltrim;

p14-1

対象の文字列から空白文字が取り除かれていることが確認できます。なお分かりやすいようにquote関数を使って取得した値をクォートして表示しています。

今度は次のようなデータが格納されたテーブルを対象にします。

p14-2

では「name」カラムに格納されている値から前後についている空白を削除して値を取得してみます。

select id, quote(val), quote(trim(val)) from trimtable;

p14-3

このサンプルでも結果が分かりやすいようにquote関数を使って値をクォートしてから取得しています。このようにtrim関数を使うことで文字列の先頭や最後に付いた不要な空白を削除することができます。

( Written by Tatsuo Ikura )