SQLには文字列関数と呼ばれる、文字列を操作するための様々な関数が用意されています。
今回の記事では、文字列関数の一つであるTRIM関数について、詳しく解説していきたいと思います。
・TRIM関数とは何か?
・TRIM関数の基本的な使い方
・TRIM関数が使えない場合の応用方法
など、具体的な使用方法について解説していきますので、ぜひ最後までご覧になってみてください!
SQLのTRIMとは
SQLで文字列を扱う時、左端や右端に余分な空白が付属していることがあります。これらの空白を取り除く際に使用するのが、TRIM関数です。
TRIM関数を使用すると、文字列の先頭と末尾に含まれる空白を切り捨てることができます。
SQL92/99で既定されている関数で、多くのRDBMSがサポートしている機能でもあります。
TRIM関数の使い方
TRIM関数の使い方は簡単で、操作したい文字列を引数に指定するだけで空白を取り除くことができます。
基本構文は以下の通りです。
【基本構文】
TRIM(文字列)
TRIM関数を使用すると、指定した文字列の先頭と末尾のそれぞれから、空白以外の文字が現れるまでの空白文字を削除してくれます。
まずは簡単なサンプルコードを見てみましょう。
【サンプルコード】
SELECT TRIM(' sample ');
【実行結果】
sample
このように、TRIM関数を使用して文字列から空白を取り除いた結果を取得することができます。
また、作成したデータベース内の文字列を操作したい場合は、以下のような方法でデータを更新することもできます。
【テーブル作成用のサンプルコード】
-- テーブルを作成
CREATE TABLE students (
id INTEGER,
name TEXT,
gender TEXT
);
-- データをセット
INSERT INTO students VALUES (1, ' 山田太郎 ', '男');
INSERT INTO students VALUES (2, ' 中村英子 ', '女');
INSERT INTO students VALUES (3, ' 鈴木良太 ', '男');
-- テーブルを出力
SELECT * FROM students;
【作成されたテーブルの内容】
1| 山田太郎 |男
2| 中村英子 |女
3| 鈴木良太 |男
【TRIM関数を使用するクエリのサンプルコード】
UPDATE students SET name = TRIM(name);
SELECT * FROM students;
【実行結果】
1|山田太郎|男
2|中村英子|女
3|鈴木良太|男
ただし、上記で説明したようにTRIM関数で削除できるのは前後の空白のみとなるため、文字列の間に挟まれている空白は削除されずに残ります。
【サンプルコード】
SELECT TRIM(' Hello World! ');
【実行結果】
Hello World!
TRIM関数で全角スペースを削除する
TRIM関数では、空白の削除のみに限らず任意の文字を指定して切り捨てることもできます。
ほとんどのDBMSの場合、削除する文字を指定せずにTRIM関数を使用すると半角スペースのみが対象となるため、付属する空白が全角スペースだった場合には削除されずに残ってしまいます。そこで使用するのがこの方法です。
以下のサンプルコードのように、削除する文字に全角スペースを指定することで、半角スペースの時と同様に空白を取り除くことができます。
【サンプルコード】
-- SQLiteなど
SELECT TRIM(' abc ', ' ');
-- SQLServer、MySQLなど
SELECT TRIM(' ' FROM ' abc ');
【実行結果】
abc
使用するRDBMSによって構文が少々異なるため、使用するDB環境に合わせた方法で記述してください。
ただし、Accessに関してはTRIM関数の一部の機能のみがサポートされており、削除する文字を指定することはできないため注意が必要です。(代わりに、Accessでは半角と全角の両方に対応して削除を行なってくれます)
LTRIM, RTRIMで文字列の前か後の空白を削除する
使用する環境によっては、TRIM関数で先頭のみや末尾のみを指定して削除することも可能ですが、基本的には前後両方を削除するための関数となっています。
そのため、SQLにはTRIM関数の他にも、LTRIM関数とRTRIM関数という、先頭・末尾のどちらかに限定して空白を削除する関数が用意されています。
それぞれの使い方について、詳しく見ていきましょう。
LTRIM関数で文字列の左側の空白を削除する
LTRIM関数は、文字列の先頭側( = 左側 Left)のみを削除したい場合に使用する関数です。
基本構文は以下の通りになります。
【基本構文】
LTRIM(文字列)
サンプルコードで実際の動きを見てみましょう。
【サンプルコード】
CREATE TABLE students (
id INTEGER,
name TEXT,
gender TEXT
);
INSERT INTO students VALUES (1, ' 山田太郎 ', '男');
INSERT INTO students VALUES (2, ' 中村英子 ', '女');
INSERT INTO students VALUES (3, ' 鈴木良太 ', '男');
UPDATE students SET name = LTRIM(name);
SELECT * FROM students;
【実行結果】
1|山田太郎 |男
2|中村英子 |女
3|鈴木良太 |男
TRIM関数の時と異なり、文字列の左側だけ空白が取り除かれているのが分かると思います。
RTRIM関数で文字列の右側の空白を削除する
LTRIM関数が先頭側のみを削除する関数なのに対し、RTRIM関数は末尾側( = 右側 Right)のみを削除する関数となっています。
基本構文はLTRIM関数の時とほとんど同じ形式です。
【基本構文】
RTRIM(文字列)
サンプルコードで動きを見てみましょう。
【サンプルコード】
CREATE TABLE students (
id INTEGER,
name TEXT,
gender TEXT
);
INSERT INTO students VALUES (1, ' 山田太郎 ', '男');
INSERT INTO students VALUES (2, ' 中村英子 ', '女');
INSERT INTO students VALUES (3, ' 鈴木良太 ', '男');
UPDATE students SET name = RTRIM(name);
SELECT * FROM students;
【実行結果】
1| 山田太郎|男
2| 中村英子|女
3| 鈴木良太|男
先ほどのLTRIM関数のサンプルでは実行結果にて先頭側の空白が削除されていましたが、こちらは末尾側の空白が削除されています。
このように、LTRIM関数とRTRIM関数では削除できる場所が異なるため、状況に応じて使い分けると良いでしょう。
TRIM関数が効かない場合の対処法
稀なケースではありますが、使用環境によっては全角スペースの削除が行えなかったり、TRIM関数が上手く作用しないといった問題に当たってしまう可能性があります。
そうしたケースにも対応できるよう、応用方法も合わせて紹介していきたいと思います。
REPLACE関数で全角スペースを半角スペースに置き換える
既存のTRIM関数の機能で全角スペースが削除できない場合、REPLACE関数と組み合わせて使用することで同様の結果を得ることができます。
以下のように、REPLACE関数で全角スペースを半角スペースに置き換えてから、TRIM関数で空白を削除しましょう。
【サンプルコード】
SELECT TRIM(REPLACE(' sample ', ' ', ' '));
【実行結果】
sample
また、文字列の前後だけでなく、間にある空白も合わせて取り除きたい場合にも、REPLACE関数は有効です。
この場合は、空白の部分を空文字に置き換えることで、文字列内に含まれる全ての空白を取り除くことができます。
【サンプルコード】
SELECT REPLACE(' Hello World! ', ' ', '');
【実行結果】
HelloWorld!
LTRIM, RTRIMを組み合わせて使用する
文字列の先頭・末尾の半角スペースの余白に対してTRIM関数が上手く機能しない場合は、LTRIM関数とRTRIM関数を組み合わせて代用しましょう。
以下のように、一方の関数で空白を除去した文字列をもう片方の関数に指定することで、TRIM関数を使用した時と同じように両端の空白を取り除くことができます。
【サンプルコード】
SELECT LTRIM(RTRIM(' sample '));
【実行結果】
sample
まとめ
今回は、SQLでTRIM関数を使う方法について解説しました。
文字列に余白が入ることはよくあることかと思うので、覚えておいて損はない知識です。
ぜひ、この記事を参考にしながら、実践でも活用してみてください!
SQL関連記事
- RDBを操作するデータベース言語「SQL」とは?
- RDB以外のデータベース管理システム「NoSQL」とは?
- RDB管理システム「MySQL」とは?
- RDB管理システム「PostgreSQL」とは?
- RDB管理システム「SQL Server」とは?
- RDB管理システム「SQLite」とは?
- ブラウザ上でMySQLを管理できる「phpMyAdmin」とは?
- データを追加する「INSERT」文
- データを削除する「DELETE」文
- データを更新する「UPDATE」文
- 抽出条件を指定する「WHERE」句
- 抽出条件を指定する「HAVING」句
- 複数の抽出条件をまとめる「IN」句
- 重複レコードを除外する「DISTINCT」
- 抽出範囲を指定する「BETWEEN」演算子
- 抽出条件を満たすレコードの存在の有無を調べる「EXISTS」句
- レコード件数を取得する集計関数「COUNT」関数
- レコードをグループ化する「GROUP BY」句
- 抽出結果を並び替える「ORDER BY」句
- テーブル間のデータを結合する「JOIN」句
- 抽出結果を統合して表示する「UNION」句
- データの曖昧検索「LIKE」句
- 条件分岐処理「CASE」式
SQLの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、SQLに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。