概要:このチュートリアルでは、文字列の先頭と末尾の文字を削除するSQL TRIM関数について紹介します。
SQL TRIM関数の紹介
TRIM関数は、文字列の先頭または末尾、あるいはその両方の文字を削除することができます。TRIM関数の構文を以下に示します。
TRIM([LEADING | TRAILING | BOTH] trim_character FROM source_string);Code language: SQL (Structured Query Language) (sql)まず、TRIM関数が削除する文字であるtrim_characterを指定します。 trim_characterを指定しない場合、TRIM関数はソース文字列から空白を削除します。
次に、FROM句の後にsource_stringを配置します。
3つ目に、LEADING、TRAILING、BOTHは、TRIM関数がtrim_characterを削除するsource_stringの側を指定します。
LEADINGを指定すると、TRIM関数はtrim_characterに一致する先頭の文字をすべて削除します。TRAILINGを指定すると、TRIM関数はtrim_characterに一致する末尾の文字をすべて削除します。BOTHを指定するか、3つのいずれも指定しない場合、TRIM関数はtrim_charactersに一致する先頭と末尾の両方の文字を削除します。
trim_characterまたはソース文字列がNULLの場合、TRIM関数はNULLを返します。
SQL TRIMの例
文字列の先頭に2つのスペース、末尾に1つのスペースが含まれている文字列(' SQL ')があるとします。長さはこの文字列は6です。
SELECT LENGTH(' SQL ');Code language: SQL (Structured Query Language) (sql) length
--------
6
(1 row)Code language: SQL (Structured Query Language) (sql)次のステートメントは、LEADINGオプションを指定したTRIM関数を使用して、文字列の先頭のスペースをすべて削除します。
SELECT TRIM(LEADING FROM ' SQL ');
trim
-------
SQL
(1 row)Code language: SQL (Structured Query Language) (sql)LENGTH関数を使用してテストできます。 TRIM関数は文字列の先頭の2つのスペースを削除するため、結果の文字列の長さは4でなければなりません。
SELECT LENGTH(TRIM(LEADING FROM ' SQL '));
LENGTH
--------
4
(1 row)Code language: SQL (Structured Query Language) (sql)次のステートメントは、TRAILINGオプションを指定したTRIM関数を使用して、文字列の末尾の空白をすべて削除します。
SELECT TRIM(TRAILING FROM ' SQL ');
trim
-------
SQL
(1 row)Code language: SQL (Structured Query Language) (sql)TRIM関数は文字列の末尾の1つのスペースを削除するため、文字列の長さは5でなければなりません。
SELECT LENGTH(TRIM(TRAILING FROM ' SQL '));
length
--------
5
(1 row)Code language: SQL (Structured Query Language) (sql)次のステートメントは、文字列の先頭と末尾の両方のスペースを削除します。
SELECT TRIM(' SQL ');
trim
-------
SQL
(1 row)Code language: SQL (Structured Query Language) (sql)もちろん、結果の文字列の長さは3でなければなりません。
SELECT LENGTH(TRIM(' SQL '));
length
--------
3
(1 row)Code language: SQL (Structured Query Language) (sql)次のステートメントは、trim_characterが「0」であるため、文字列の先頭のゼロを削除します。
SELECT TRIM(LEADING '0' FROM '00001900');Code language: SQL (Structured Query Language) (sql) trim
-------
1900
(1 row)Code language: SQL (Structured Query Language) (sql)次のステートメントは、文字列の先頭と末尾の両方の@を削除します。
SELECT TRIM('@' FROM '@2000@');Code language: SQL (Structured Query Language) (sql) trim
-------
2000
(1 row)Code language: SQL (Structured Query Language) (sql)ユーザーが氏名、メールアドレス、電話番号などの入力フィールドを含むフォームを送信する場合、データに先頭または末尾のスペース、あるいはその両方が含まれていることがあります。データベースに挿入または更新する前に、スペースを検証して削除する必要があります。そうでない場合、データがクリーンではなくなり、WHERE句を使用した一致が正しく行われません。
データをクリーンアップする必要がある場合は、TRIM関数とUPDATEステートメントを使用して、データベースからすべての不要な文字、特にスペースを削除できます。
たとえば、次のステートメントは、employeesテーブルのfirst_name、last_name、email、phone_number列の先頭と末尾のスペースをすべて削除します。

UPDATE employees
SET
first_name = TRIM(first_name),
last_name = TRIM(last_name),
email = TRIM(email),
phone_number = TRIM(phone_number);Code language: SQL (Structured Query Language) (sql)このチュートリアルでは、SQL TRIM関数を使用して文字列から不要な文字を削除する方法を学びました。