本資料は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で末尾が削除されているかを確認するために$をカラムの値の後ろに連結しました。
trimdb=# SELECT LTRIM(c1) || '$' , RTRIM(c1) || '$' from trimtbl; ?column? | ?column? ----------+---------- hello $ | hello$ world $ | world$ (2 行)
上記結果によりLTRIMは左側のスペースを削除し、RTRIMは右側のスペースを削除するのが確認できます。
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を使用した例を記します。
trimdb=# SELECT '^' || TRIM(LEADING from ' SAKURA TSUBAKI ') || '$';
?column?
--------------------
^SAKURA TSUBAKI $
(1 行)trimdb=# SELECT '^' || TRIM(TRAILING from ' SAKURA TSUBAKI ') || '$';
?column?
--------------------
^ SAKURA TSUBAKI$
(1 行)BOTH, LEADING, TRAILINGを使用し文字列を指定してトリミングしてみる
trimdb=# SELECT TRIM(BOTH 'abc' from 'abcSAKURAabc'); btrim -------- SAKURA (1 行)
trimdb=# SELECT TRIM(LEADING 'abc' from 'abcSAKURAabc'); ltrim ----------- SAKURAabc (1 行)
trimdb=# SELECT TRIM(TRAILING 'abc' from 'abcSAKURAabc'); rtrim ----------- abcSAKURA (1 行)