Accessでテキストデータを扱う時、データの前後に不必要な空白が入っていると、検索や集計・条件比較などで意図しない結果になることがあります。Trim/LTrim/RTrimの各関数は、そのようなケースで不必要な空白を取り除くことができる関数です。
この記事ではそれぞれの関数の基本、違い、使い分けについて解説します。
Trim / LTrim / RTrim 関数とは
Accessでは文字列の前後にある空白(スペース)を取り除く関数として、次の 3 つが用意されています。
| 関数名 | 内容 |
|---|---|
Trim | 文字列の 先頭・末尾 の空白を両方削除 |
LTrim | 文字列の 先頭(Left) の空白だけ削除 |
RTrim | 文字列の 末尾(Right) の空白だけ削除 |
Trim関数は、LTrim関数/RTrim関数の両方の性質を持った関数です。
構文
Trim関数
Trim(文字列)
LTrim関数
LTrim(文字列)
RTrim関数
RTrim(文字列)
いずれも、引数が1つのみのシンプルな関数です。
それでは、次項で具体例をみていきましょう。
具体例
テーブルに氏名のフィールドがあり、両端に空白が入っているレコードがあります。
分かりにくいですが、左側に空白が入っているものもあります。

青森 一郎が3レコードありますが、空白があるため青森 一郎で抽出しても1件しか絞り込まれません。

このテーブルに対して、以下のクエリを作成し、Trim,LTrim,RTrimの違いを比較します。

そして、実行結果がこちらです。

【解説】
氏名フィールドには、半角または全角の空白が左右に入っているレコードがあります。
- Trim…先頭の空白が削除されたことで、文字列が左側に寄せられていることが分かります。
※見えませんが、末尾の空白も削除されています。 - LTrim…先頭の空白が削除されたことで、文字列が左側に寄せられていることが分かります。
- RTrim…先頭の空白は削除されませんので、文字位置はそのままです。
※変化は見えませんが、末尾の空白は削除されています。
改めて、Trim関数後の青森 一郎で抽出すると3レコードが絞り込まれました。

各関数の特徴が理解いただけたでしょうか。
実務では両側を一気に削除するTrim関数がよく使われます。
文字列中(途中)の空白削除について
Replace関数による苗字と名前の間の空白削除方法
前述したとおり、Trim/LTrim/RTrim は「先頭」「末尾」の空白しか削除できません。
たとえば、「横浜 一郎」のように、苗字と名前の間の空白は削除できないのです。
そのため、文字列の途中の空白を削除したい時はReplace関数を使う必要があります。
Replace関数は、文字列中の任意の文字列を置き換える関数ですが、以下のような式にすることで空白を削除することができます。
Replace(文字列, ” “, “”)
先ほどの氏名フィールドを用いて、検証してみましょう。

このように、苗字と氏名の間の空白を削除することができます。また間の空白だけでなく、前後の空白も削除されているのがお分かりいただけると思います。Replace関数は、ある意味、Trim/LTrim/RTrim関数の上位互換としても位置付けることができます。
もちろん、文字列中の空白を削除したくない場合もありますので、そういった場合はTrim/LTrim/RTrim関数の出番です。各関数の特徴を把握して、うまく使い分けていきましょう。
Replace関数の詳細については、こちらの記事で詳しく解説しています。
Trim$/LTrim$/RTrim$関数との違い
各関数の末尾に「$」が付いているものもあります。通常のものとどのような違いがあるか解説します。
| 関数名 | 相違点 |
|---|---|
Trim/LTrim/RTrim関数 | 戻り値のデータ型がVariant型 |
Trim$/LTrim$/RTrim$関数 | 戻り値のデータ型がString型 |
関数の動作内容はまったく同じで、戻り値のデータ型が異なるだけです。
変数のデータ型に対してもいえますが、基本的にはVariant型ではなく、その用途に沿ったデータ型を指定するのがセオリーです。それは、余分なメモリー消費を抑えたり、パフォーマンス向上を図るというのが理由となっています。
ですが、Accessで使用するような範囲内であれば体感できる差はほぼありません。
よって通常は「$」のない、Trim/LTrim/RTrim関数の使用で問題ないでしょう。
まとめ
前後の空白を整えるための Trim系関数は、文字列整形の代表的な関数です。
正しく使い分ければ、クエリの比較・集計・データクレンジングの精度が向上します。
Trim:前後両方LTrim:先頭RTrim:末尾Replace:文字列中も含めた任意の削除・置換
これらの違いを把握し活用してみましょう。



