$ man replace
REPLACE
文字列関数文字列の中の指定した文字列を、すべて別の文字列に置き換える。
呼び出しの形
REPLACE(対象, 探す文字列, 置き換える文字列)
つまずきやすいところ
すべての出現箇所が置き換わります。1 つ目だけを置き換える指定はありません。
正規表現ではありません。パターンを使いたいときは
REGEXP_REPLACEですが、こちらは製品ごとに構文が違います。引数のどれかが NULL なら結果は NULL です。
実行例
結果は実際に流したものです。同じ SQL を 自由に打てる画面 で試すと、同じ結果になります。
SELECT shohin_name, REPLACE(shohin_name, 'ペン', 'PEN') AS okikae FROM shohin ORDER BY shohin_id
| shohin_name | okikae |
|---|---|
| ノート | ノート |
| ボールペン | ボールPEN |
| 付箋 | 付箋 |
| デスクチェア | デスクチェア |
| 書棚 | 書棚 |
| デスクライト | デスクライト |
| キーボード | キーボード |
7 行
SELECT kokyaku_name, REPLACE(kokyaku_name, '株式会社', '') AS kesu FROM kokyaku ORDER BY kokyaku_id
| kokyaku_name | kesu |
|---|---|
| 青葉工業 | 青葉工業 |
| 白樺物産 | 白樺物産 |
| 黒松システム | 黒松システム |
| 赤坂商会 | 赤坂商会 |
| 三田商事 | 三田商事 |
5 行
説明
REPLACE は、対象の中に現れる文字列をすべて置き換えます。「最初の 1 つだけ」という指定はできません。
3 つの引数はすべて文字列です。正規表現ではありませんので、. や * もそのままの文字として扱われます。パターンで置き換えたいときは REGEXP_REPLACE を使います。
置き換える文字列に空文字を渡せば、削除になります。ハイフン入りの電話番号や、カンマ入りの金額をそろえるときによく使う書き方です。
⚠️ 引数のどれかが NULL なら結果も NULL です。元の列が NULL かもしれない場合は COALESCE で埋めてから渡してください。
次に読む
使い方を順に読むなら
根拠にした一次情報
- PostgreSQL 18 マニュアル: 文字列関数と演算子(2026-09-02 確認)