$ man regexp-replace
REGEXP_REPLACE
文字列関数正規表現で置き換える。既定では最初の 1 つしか置き換えない。
呼び出しの形
REGEXP_REPLACE(対象, パターン, 置き換える文字列) REGEXP_REPLACE(対象, パターン, 置き換える文字列, フラグ)
つまずきやすいところ
既定では最初の 1 つだけです。
REPLACEとは逆なので、すべて置き換えるなら第 4 引数に'g'を渡してください。文字どおりの置き換えなら
REPLACEのほうが速く、意図も伝わります。.や*がパターンとして解釈される事故も防げます。正規表現の方言と後方参照の書き方は製品ごとに違います。移植時は必ず動かして確かめてください。
実行例
結果は実際に流したものです。同じ SQL を 自由に打てる画面 で試すと、同じ結果になります。
SELECT juchu_on, REGEXP_REPLACE(juchu_on::text, '-', '/') AS kitei, REGEXP_REPLACE(juchu_on::text, '-', '/', 'g') AS g_tsuki FROM juchu ORDER BY juchu_on
| juchu_on | kitei | g_tsuki |
|---|---|---|
| 2025-11-05 | 2025/11-05 | 2025/11/05 |
| 2025-11-18 | 2025/11-18 | 2025/11/18 |
| 2025-12-02 | 2025/12-02 | 2025/12/02 |
| 2025-12-09 | 2025/12-09 | 2025/12/09 |
| 2025-12-24 | 2025/12-24 | 2025/12/24 |
| 2026-01-07 | 2026/01-07 | 2026/01/07 |
| 2026-01-21 | 2026/01-21 | 2026/01/21 |
| 2026-02-03 | 2026/02-03 | 2026/02/03 |
10 行(うち 8 行を表示)
既定の列は最初のハイフンしか変わっていません。
SELECT shohin_name, REGEXP_REPLACE(shohin_name, '[ァ-ヶー]+', 'カナ', 'g') AS kana_matome FROM shohin ORDER BY shohin_id
| shohin_name | kana_matome |
|---|---|
| ノート | カナ |
| ボールペン | カナ |
| 付箋 | 付箋 |
| デスクチェア | カナ |
| 書棚 | 書棚 |
| デスクライト | カナ |
| キーボード | カナ |
7 行
説明
REGEXP_REPLACE は正規表現で置き換えます。文字どおりの置き換えでよいなら REPLACE のほうが速く、読みやすくなります。
⚠️ 既定では最初に見つかった 1 つしか置き換えません。REPLACE がすべて置き換えるのと逆なので、乗り換えたときにここで必ず引っかかります。すべて置き換えるには第 4 引数に 'g'(global)を渡してください。
使えるフラグは他にもあり、'i' は大文字小文字を無視します。組み合わせて 'gi' と書けます。
⚠️ 正規表現の方言は製品ごとに違います。後方参照の書き方(\1 と $1)も揃っていないので、移植するときは必ず動かして確かめてください。
次に読む
使い方を順に読むなら
根拠にした一次情報
- PostgreSQL 18 マニュアル: 文字列関数と演算子(2026-09-02 確認)