SQL道場 文字列関数 TRIM関数

SQLで文字列から指定された文字を削除するTRIM関数について記載しています。

対応データベースSQL Server MySQL Oracle PostgreSQL SQLite Access ANSI

TRIM関数の文法

SELECT TRIM(文字列) FROM テーブル
SELECT TRIM(削除する文字 FROM 対象文字列) FROM テーブル
SELECT TRIM(|LEADING | TRAILING | BOTH|削除する文字 FROM 対象文字列) FROM テーブル
引数対象文字列文字列型
削除する文字文字型
返値文字列型 変換後の文字列が戻ります。

TRIM関数は文字列から指定文字を削除します。LEADINGは文字列の先頭から削除する場合に指定しますのでLTRIMと同様です。TRAILINGは文字列の末尾から削除する場合に指定しますのでRTRIM関数と同様です。BOTHは先頭と末尾の両方から削除する場合に指定するので、PostgreSQLのBTRM関数と同じです。

LEADING、TRAILING、BOTHのいずれも省略した場合はBOTHとみなされます。削除する文字を省略した場合は、半角スペースを削除します。全角スペースは削除されません。Accessでは文字列の先頭と末尾の両方から空白を削除します。LEADING、TRAILING、BOTH及びFROMの指定はできません。

MySQL

すべての remstr プリフィクスまたはサフィクスが削除された文字列 str を返します。 BOTH、LEADING、TRAILING のいずれの指定子も指定されない場合は、BOTH が指定されたとみなされます。remstr はオプションであり、指定されない場合は空白文字が削除されます。

https://dev.mysql.com/doc/refman/8.0/ja/string-functions.html#function_trim

SQLServer

文字列の先頭と末尾にあるスペース文字 または他の指定した文字を削除します。また、SQLServerでTRIMが対応しているのは、SQL Server 2017 (14.x)以降である。

LEADING、TRAILING、または BOTH キーワードを使うには、データベースの互換性レベルを 160 に設定する必要があります。

実行例

MySQLの実行例

WORKテーブルに格納されている文字列の両端から半角空白を削除します。

STR
abcdefg
国語
国語 
abcdefg
/* SQLで文字列の両端から半角空白を削除するサンプル */
SELECT STR,TRIM(BOTH ' ' FROM STR) FROM testdb.WORK;
TRIM関数サンプル実行結果

前方から指定の文字を削除します。

/* SQLで文字列の前方からx文字を削除するサンプル */
SELECT TRIM(LEADING 'x' FROM 'xxxxabcdefxxxx');
TRIM関数サンプル実行結果

両端から指定の文字を削除します。

/* SQLで文字列の両端からx文字を削除するサンプル */
SELECT TRIM(BOTH 'x' FROM 'xabcdefx');
TRIM関数サンプル実行結果

末尾から指定の文字を削除します。

/* SQLで文字列の末尾からx文字を削除するサンプル */
SELECT TRIM(TRAILING  'x' FROM 'xxxxabcdefxxxx');
TRIM関数サンプル実行結果

SQLServerの実行例

/* SQLで文字列の両端から空白を削除するサンプル */
SELECT TRIM( '     test    ') AS Result;
TRIM関数サンプル実行結果
/* SQLで文字列の両端からx文字を削除するサンプル */
SELECT TRIM('x' FROM 'xxxxabcdefxxxx');
TRIM関数サンプル実行結果