$ man trim
TRIM
文字列関数文字列の前後の空白(や指定した文字)を取り除く。
呼び出しの形
TRIM(文字列) TRIM(BOTH 文字 FROM 文字列) TRIM(LEADING 文字 FROM 文字列) TRIM(TRAILING 文字 FROM 文字列)
つまずきやすいところ
全角空白は既定では取り除かれません。 日本語のデータでは、取り除く文字に全角空白を明示するか、
REPLACEで先に置き換えてください。TRIMが消すのは前後だけです。文字列の途中の空白は残ります。char(n)型は値が空白で埋められるため、TRIMを通すかどうかで比較結果が変わることがあります。
実行例
結果は実際に流したものです。同じ SQL を 自由に打てる画面 で試すと、同じ結果になります。
SELECT '[' || TRIM(' 空白つき ') || ']' AS ryouhou, '[' || TRIM(LEADING FROM ' 空白つき ') || ']' AS mae_dake, '[' || TRIM(TRAILING FROM ' 空白つき ') || ']' AS ushiro_dake| ryouhou | mae_dake | ushiro_dake |
|---|---|---|
| [空白つき] | [空白つき ] | [ 空白つき] |
1 行
角括弧で囲むと、どこが削れたかが見えます。
SELECT '[' || TRIM(' 全角空白 ') || ']' AS zenkaku_wa_kienai, '[' || TRIM(' ' FROM ' 全角空白 ') || ']' AS moji_wo_shitei| zenkaku_wa_kienai | moji_wo_shitei |
|---|---|
| [ 全角空白 ] | [全角空白] |
1 行
取り除く文字として明示すれば消えます。
説明
TRIM は前後の空白を取り除きます。取り除く文字を指定することもでき、LEADING(前だけ)TRAILING(後ろだけ)BOTH(両方・既定)で範囲を選べます。
入力された文字列を比較する前に通しておくと、「見た目は同じなのに一致しない」を減らせます。コピー&ペーストで紛れ込む末尾の空白は、目で見て気づけません。
⚠️ 取り除けるのは指定した文字だけです。全角空白(U+3000)は半角空白とは別の文字なので、既定の TRIM では取り除かれません。日本語のデータでは必ず引っかかります。
次に読む
使い方を順に読むなら
根拠にした一次情報
- PostgreSQL 18 マニュアル: 文字列関数と演算子(2026-09-02 確認)