このエントリーをはてなブックマークに追加


PostgreSQLで文字列の不要なスペースをトリミングする・TRIM・LTRIM・RTRIM

本資料はPostgreSQLで文字列の前後にある不要なスペースを削除する文字列関数TRIM, LTRIM, RTRIMについて記述します。

関連記事

環境および環境設定など

使用したOSはCentOS6になります。
PostgreSQLのバージョンは8.4.13です。

以下の操作でPostgreSQLに接続、SQLを実行しデータベースおよびテーブルを作成しデータを投入しました。

[root@centos6 ~]# su - postgres
-bash-4.1$ createdb trimdb
-bash-4.1$ psql trimdb
psql (8.4.13)
"help" でヘルプを表示します.

trimdb=# create table trimtbl (c1 varchar(10));
CREATE TABLE
trimdb=# insert into trimtbl values(' hello '),('  world  ');
INSERT 0 2
trimdb=# SELECT * FROM trimtbl;
    c1
-----------
  hello
   world
(2 行)

LTRIM, RTRIMを使ってみる。

作成したテーブルを使用してLTRIM, RTRIMを使用してみます。

ダブルパイプで$を末尾に連結しています。
これは、LTRIM, RTRIMで末尾が削除されているかを確認するために$をカラムの値の後ろに連結しました。

trimdb=# SELECT LTRIM(c1) || '$' , RTRIM(c1) || '$' from trimtbl;
 ?column? | ?column?
----------+----------
 hello $  |  hello$
 world  $ |   world$
(2 行)

上記結果によりLTRIMは左側のスペースを削除し、RTRIMは右側のスペースを削除するのが確認できます。

TRIMを使ってみる

TRIM関数は任意の文字列を削除することができます。

引数指定なしでTRIMを実行する(前後のスペース削除)

引数を指定しないでtrimを実行すると前後のスペースを削除します。

trimdb=# SELECT '^' || TRIM(c1) || '$' from trimtbl;
 ?column?
----------
 ^hello$
 ^world$
(2 行)

trim(文字列)は、以下のように書くこともできます。

select trim(both from カラム名) from テーブル名;

文字列を直に設定し実行することもできます。

trimdb=# SELECT '^' || TRIM(BOTH from ' SAKURA TSUBAKI ') || '$';
     ?column?
------------------
 ^SAKURA TSUBAKI$
(1 行)

引数指定を指定してみる

上記ではBOTHを指定しました。
以下では、LEADING, TRAILINGを使用した例を記します。

  • LEADINGはLTRIMと同じ動作
    trimdb=# SELECT '^' || TRIM(LEADING from '  SAKURA TSUBAKI  ') || '$';
          ?column?
    --------------------
     ^SAKURA TSUBAKI  $
    (1 行)
  • TRAILINGはRTRIMと同じ動作
    trimdb=# SELECT '^' || TRIM(TRAILING from '  SAKURA TSUBAKI  ') || '$';
          ?column?
    --------------------
     ^  SAKURA TSUBAKI$
    (1 行)

文字列を指定しトリミングする

BOTH, LEADING, TRAILINGを使用し文字列を指定してトリミングしてみる

  • BOTH BOTHの場合は指定した文字列(abc)を先頭と末尾から削除します。
    以下の実行例はabcSAKURAabcがSAKURAになります。
    trimdb=# SELECT TRIM(BOTH 'abc' from 'abcSAKURAabc');
     btrim
    --------
     SAKURA
    (1 行)
  • LEADING LEADINGの場合は指定した文字列(abc)を先頭(左側)から削除します。
    以下の実行例はabcSAKURAabcがSAKURAabcになります。
    trimdb=# SELECT TRIM(LEADING 'abc' from 'abcSAKURAabc');
       ltrim
    -----------
     SAKURAabc
    (1 行)
  • TRAILING TRAILINGの場合は指定した文字列(abc)を先頭(左側)から削除します。
    以下の実行例はabcSAKURAabcがabcSAKURAになります。
    trimdb=# SELECT TRIM(TRAILING 'abc' from 'abcSAKURAabc');
       rtrim
    -----------
     abcSAKURA
    (1 行)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00