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


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

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

参考資料

関連記事

環境および環境設定など

使用したOSはCentOS6になります。
MySQLのバージョンは以下のとおりです。

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.1.66    |
+-----------+
1 row in set (0.01 sec)

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

mysql> create database trimdb;
Query OK, 1 row affected (0.00 sec)

mysql> use trimdb
Database changed
mysql> create table trimtbl (c1 varchar(10));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into trimtbl values(' hello '),('  world  ');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from trimtbl;
+-----------+
| c1        |
+-----------+
|  hello    |
|   world   |
+-----------+
2 rows in set (0.00 sec)

LTRIM, RTRIMを使ってみる。

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

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

mysql> select concat(ltrim(c1),'$'), concat(rtrim(c1),'$') from trimtbl;
+-----------------------+-----------------------+
| concat(ltrim(c1),'$') | concat(rtrim(c1),'$') |
+-----------------------+-----------------------+
| hello $               |  hello$               |
| world  $              |   world$              |
+-----------------------+-----------------------+
2 rows in set (0.00 sec)

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

TRIMを使ってみる

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

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

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

mysql> select concat(trim(c1),'$'), concat(trim(c1),'$') from trimtbl;
+----------------------+----------------------+
| concat(trim(c1),'$') | concat(trim(c1),'$') |
+----------------------+----------------------+
| hello$               | hello$               |
| world$               | world$               |
+----------------------+----------------------+
2 rows in set (0.00 sec)

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

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

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

mysql> select trim(' HELLO WORLD ');
+-----------------------+
| trim(' HELLO WORLD ') |
+-----------------------+
| HELLO WORLD           |
+-----------------------+
1 row in set (0.00 sec)

mysql> select trim(both from ' HELLO WORLD ');
+---------------------------------+
| trim(both from ' HELLO WORLD ') |
+---------------------------------+
| HELLO WORLD                     |
+---------------------------------+
1 row in set (0.00 sec)

引数指定を指定してみる

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

  • LEADINGはLTRIMと同じ動作
    mysql> SELECT CONCAT(TRIM(LEADING FROM '  HELLO WORLD  '), '$');
    +---------------------------------------------------+
    | CONCAT(TRIM(LEADING FROM '  HELLO WORLD  '), '$') |
    +---------------------------------------------------+
    | HELLO WORLD  $                                    |
    +---------------------------------------------------+
    1 row in set (0.00 sec)
  • TRAILINGはRTRIMと同じ動作
    mysql> SELECT CONCAT(TRIM(TRAILING FROM '  HELLO WORLD  '), '$');
    +----------------------------------------------------+
    | CONCAT(TRIM(TRAILING FROM '  HELLO WORLD  '), '$') |
    +----------------------------------------------------+
    |   HELLO WORLD$                                     |
    +----------------------------------------------------+
    1 row in set (0.00 sec)

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

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

  • BOTH BOTHの場合は指定した文字列(abc)を先頭と末尾から削除します。
    以下の実行例はabcSAKURAabcがSAKURAになります。
    mysql> SELECT TRIM(BOTH 'abc' FROM 'abcSAKURAabc');
    +--------------------------------------+
    | TRIM(BOTH 'abc' FROM 'abcSAKURAabc') |
    +--------------------------------------+
    | SAKURA                               |
    +--------------------------------------+
    1 row in set (0.00 sec)
  • LEADING LEADINGの場合は指定した文字列(abc)を先頭(左側)から削除します。
    以下の実行例はabcSAKURAabcがSAKURAabcになります。
    mysql> SELECT TRIM(LEADING 'abc' FROM 'abcSAKURAabc');
    +-----------------------------------------+
    | TRIM(LEADING 'abc' FROM 'abcSAKURAabc') |
    +-----------------------------------------+
    | SAKURAabc                               |
    +-----------------------------------------+
    1 row in set (0.00 sec)
  • TRAILING TRAILINGの場合は指定した文字列(abc)を先頭(左側)から削除します。
    以下の実行例はabcSAKURAabcがabcSAKURAになります。
    mysql> SELECT TRIM(TRAILING 'abc' FROM 'abcSAKURAabc');
    +------------------------------------------+
    | TRIM(TRAILING 'abc' FROM 'abcSAKURAabc') |
    +------------------------------------------+
    | abcSAKURA                                |
    +------------------------------------------+
    1 row in set (0.00 sec)

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