概要:このチュートリアルでは、文字列の先頭と末尾の文字を削除する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
関数を使用して文字列から不要な文字を削除する方法を学びました。