MySQLで文字列の先頭と末尾の空白・文字を削除する(TRIM関数)

MySQL MySQL

MySQLで文字列の先頭と末尾の空白と指定文字列を削除する方法について書いています。

TRIM関数を使うことで、文字列の先頭と末尾の空白を削除することができます。
また、文字を指定して、指定文字列を削除することもできます。

公式のこちらにTRIM関数についての記載があります。
載せているSQLはMySQLのバージョン8.0.32を使って動作を確認しています。

文字列の先頭と末尾の空白を削除する

文字列の先頭と末尾の空白を削除するときには、TRIM関数を使って削除します。
例えば、下記のように文字列の先頭と末尾に空白が入っているとします。

mysql> SELECT '  apple  ';
+-----------+
| apple     |
+-----------+
|   apple   |
+-----------+
1 row in set (0.00 sec)

これに対してTRIM関数を使うと、前後の空白が削除されて返ってきます。
下記のように実行すると、空白が消えて返ってくることが確認できました。

mysql> SELECT TRIM('  apple  ');
+-------------------+
| TRIM('  apple  ') |
+-------------------+
| apple             |
+-------------------+
1 row in set (0.00 sec)

今回は文字列を直接指定していますが、もちろんテーブルのカラムを指定することもできます。
このようにTRIM関数を使うと、空白が消えて結果が返ってきます。

指定文字を削除する

文字列の左右から指定文字列を削除するには、BOTHオプションを引数につけて、指定文字列を記載します。
例えば、下記のように削除できます。

SELECT TRIM(BOTH 'banana' FROM 'bananaapplebanana');

BOTHに指定した文字列を、FROMに指定した文字の左右から削除して返してくれます。
実行すると、下記のように削除されたことが確認できました。

mysql> SELECT TRIM(BOTH 'banana' FROM 'bananaapplebanana');
+----------------------------------------------+
| TRIM(BOTH 'banana' FROM 'bananaapplebanana') |
+----------------------------------------------+
| apple                                        |
+----------------------------------------------+
1 row in set (0.00 sec)

先頭から指定文字を削除する

文字列の先頭から指定文字列を削除するには、LEADINGオプションを引数につけて、指定文字列を記載します。
例えば、下記のように削除できます。

SELECT TRIM(LEADING 'banana' FROM 'bananaapplebanana');

先ほどと同じ文字列を指定しました。
LEADINGに指定した「banana」をFROMの先頭(左側)からのみ削除してくれます。

実行すると、下記のように削除されたことが確認できました。

mysql> SELECT TRIM(LEADING 'banana' FROM 'bananaapplebanana');
+-------------------------------------------------+
| TRIM(LEADING 'banana' FROM 'bananaapplebanana') |
+-------------------------------------------------+
| applebanana                                     |
+-------------------------------------------------+
1 row in set (0.00 sec)

末尾から削除する

文字列の末尾から指定文字列を削除するには、TRAILINGオプションを引数につけて、指定文字列を記載します。
例えば、下記のように削除できます。

SELECT TRIM(TRAILING 'banana' FROM 'bananaapplebanana');

こちらも、先ほどと同じ文字列を指定しました。
TRAILINGに指定した「banana」をFROMの末尾(右側)からのみ削除してくれます。

実行すると、下記のように削除されたことが確認できました。

mysql> SELECT TRIM(TRAILING 'banana' FROM 'bananaapplebanana');
+--------------------------------------------------+
| TRIM(TRAILING 'banana' FROM 'bananaapplebanana') |
+--------------------------------------------------+
| bananaapple                                      |
+--------------------------------------------------+
1 row in set (0.00 sec)

日本語の指定もできる

マルチバイト文字に対応しているので、日本語も指定して左右から削除することができます。
例えば、下記のように使うと、左右の日本語の「りんご」を削除できます。

SELECT TRIM(BOTH 'りんご' FROM 'りんごバナナりんごバナナりんご');

実行すると、下記のように削除されました。

mysql> SELECT TRIM(BOTH 'りんご' FROM 'りんごバナナりんごバナナりんご');
+-----------------------------------------------------------------------------+
| TRIM(BOTH 'りんご' FROM 'りんごバナナりんごバナナりんご')                   |
+-----------------------------------------------------------------------------+
| バナナりんごバナナ                                                          |
+-----------------------------------------------------------------------------+
1 row in set (0.00 sec)

MySQLのTRIMのオプションまとめ

TRIM関数に指定できるオプションなどをまとめました。

項目 内容
引数なし 文字列の左右から空白が削除される
BOTH ‘削除文字列’ FROM ‘対象文字列’ 対象文字列の左右から削除文字列が削除される
LEADING ‘削除文字列’ FROM ‘対象文字列’ 対象文字列の先頭から削除文字列が削除される
TRAILING ‘削除文字列’ FROM ‘対象文字列’ 対象文字列の末尾から削除文字列が削除される

MySQLで空白や指定文字列を削除する方法まとめ

今回はTRIM関数を使って、MySQLの空白や指定文字列を削除する方法について書きました。
記事の内容をまとめると下記のようになります。

・TRIM関数を使うことで、指定したカラムや文字列の先頭・末尾の空白が削除できる
・TRIM関数にBOTHを指定して、指定した文字列を対象文字の先頭・末尾から削除できた。
・TRIM関数にLEADINGを指定して、指定した文字列を対象文字の先頭から削除できた。
・TRIM関数にBOTRAILINGHを指定して、指定した文字列を対象文字の末尾から削除できた。
・マルチバイト文字に対応しているので、日本語の指定も可能。

コメント

タイトルとURLをコピーしました