Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのtrim関数についてまとめています。

SQLのtrim関数の構文

trim関数は、文字列から余分な空白などを削除するための関数です。

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
TRIM([remstr FROM] str)

上記はMySQLのtrim関数の構文です。指定した文字列の前後から、指定した文字(remstr デフォルトでは空白)を削除します。なお、LEADINGを指定した場合には前方の空白のみ、TRAILINGを指定した場合には後方の空白のみ削除します。BOTHを指定すると何も指定しないデフォルト時の同じく、文字列の前後両方から余分な空白を削除します。

【関連記事】
【SQL】文字列からスペース(空白)を削除するには?過去と現在、二通りの方法について解説

なお、MySQLには文字列の左側の空白を削除するltrim()と右画の空白を削除するrtrimという関数が用意されています。

trimを使って、「空白または、空文字または、NULL」の行を抽出することが可能です。以下のSQLは、employees_copy(社員テーブルのコピー)から、first_name(姓名の名)が空白または空文字またはNULLのレコードを抽出する例です。2つ以上の連続した空白も抽出の対象になっています。

mysql> select * from employees_copy
where trim(first_name) = ''
or trim(first_name) IS NULL;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  10001 | 1953-09-02 |            | Facello   | M      | 1986-06-26 |
|  10002 | 1964-06-02 |            | Simmel    | F      | 1985-11-21 |
|  10003 | 1959-12-03 |            | Bamford   | M      | 1986-08-28 |
|  10005 | 1955-01-21 | NULL       | Maliniak  | M      | 1989-09-12 |
+--------+------------+------------+-----------+--------+------------+
4 rows in set (0.19 sec)

【関連記事】
SQLの空白判定のサンプルコード 連続した空白を判定する方法

trim関数で全角空白を削除する方法

全角空白を削除するには、削除対象文字列に全角空白を指定することで可能です。

select concat("#",trim(" " from " aaa "), "#");

concat("#",trim(" " from " aaa "), "#")
#aaa#

しかし、これでは半角空白と全角空白が混在していた場合に半角空白が残ってしまう可能性があります。

replace関数を使って、全角空白を半角空白に変換してからtrim関数を使用することで、全角と半角空白両方を削除することが可能です。

select concat("#",trim(replace("  aaa  "," "," ")), "#");

concat("#",trim(replace("  aaa  "," "," ")), "#")
#aaa#

Oracleのtrim関数の構文

TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

関連)Oracle公式ドキュメント:TRIM

OracleのTRIMは、trim_characterに文字を指定すると削除する文字を指定可能です。デフォルトでは、空白文字が削除対象になります。OracleにもMySQLと同じく、LTRIM、RTRIMが用意されています。

以下の例は、hire_date(日付)の先頭の「0」を削除するSQLです。

SELECT employee_id,
      TO_CHAR(TRIM(LEADING 0 FROM hire_date))
      FROM employees
      WHERE department_id = 60
      ORDER BY employee_id;

EMPLOYEE_ID TO_CHAR(T
----------- ---------
        103 20-MAY-08
        104 21-MAY-07
        105 25-JUN-05
        106 5-FEB-06
        107 7-FEB-07

SQL Serverのtrim関数の構文

-- Syntax for SQL Server and Azure SQL Database
TRIM ( [ characters FROM ] string )

関連)TRIM (Transact-SQL) – SQL Server | Microsoft Docs

SQL ServerのTRIM関数はシンプルです。指定した文字列の前後から特定の文字(デフォルトでは空白)を削除します。

SELECT TRIM( '     test    ') AS Result;
test

SELECT TRIM( '.,! ' FROM  '     #     test    .') AS Result;
#     test

SQL ServerのTRIM関数には、前方のみ、後方のみを指定するオプションはありませんが、LTRIM(前方のみ空白削除)とRTRIM(後方のみ空白削除)が用意されています。

PostgreSQLのtrim関数の構文

trim([leading | trailing | both] [characters] from string)

関連)PostgreSQL公式:文字列関数と演算子

PostgreSQLのTRIM関数は、指定した文字(デフォルトでは空白)を削除します。leading、trailing、both指定で文字列の前方、後方または両方から削除します。以下の例は、xTomxxの前方・後方からxを削除する例です。

select trim(both 'x' from 'xTomxx');

btrim
-----
Tom

PostgreSQLには、trimのほかに、btrim(前後両方から削除)、ltrim(前方のみ削除)、rtrim(後方のみ削除)の3種類の関数が用意されています。

select btrim(''xyxtrimyyx, 'xy');

btrim
-----
trim

select ltrim('zzzytrim', 'xyz')	;
ltrim
-----
trim

select rtrim('trimxxxx', 'x');
rtrim
-----
trim

まとめ

ポテパンダの一言メモ
  • TRIM関数は、文字列の前後から空白を削除する関数
  • TRIM関数をwhere条件に指定して、空白または空行またはNULL判定が可能
  • DBMSによりLTRIM、RTRIMなど関数のバリエーションあり。削除文字指定が可能なものもある。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。