コマンド道場

$ man regexp-replace

REGEXP_REPLACE

文字列関数

正規表現で置き換える。既定では最初の 1 つしか置き換えない。

呼び出しの形

REGEXP_REPLACE(対象, パターン, 置き換える文字列)
REGEXP_REPLACE(対象, パターン, 置き換える文字列, フラグ)

つまずきやすいところ

  • 既定では最初の 1 つだけです。REPLACE とは逆なので、すべて置き換えるなら第 4 引数に 'g' を渡してください。

  • 文字どおりの置き換えなら REPLACE のほうが速く、意図も伝わります。.* がパターンとして解釈される事故も防げます。

  • 正規表現の方言と後方参照の書き方は製品ごとに違います。移植時は必ず動かして確かめてください。

実行例

結果は実際に流したものです。同じ SQL を 自由に打てる画面 で試すと、同じ結果になります。

既定では 1 つだけ、g で全部
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_onkiteig_tsuki
2025-11-052025/11-052025/11/05
2025-11-182025/11-182025/11/18
2025-12-022025/12-022025/12/02
2025-12-092025/12-092025/12/09
2025-12-242025/12-242025/12/24
2026-01-072026/01-072026/01/07
2026-01-212026/01-212026/01/21
2026-02-032026/02-032026/02/03

10(うち 8 行を表示)

既定の列は最初のハイフンしか変わっていません。

パターンでまとめて置き換える
SELECT shohin_name, REGEXP_REPLACE(shohin_name, '[ァ-ヶー]+', 'カナ', 'g') AS kana_matome FROM shohin ORDER BY shohin_id
shohin_namekana_matome
ノートカナ
ボールペンカナ
付箋付箋
デスクチェアカナ
書棚書棚
デスクライトカナ
キーボードカナ

7

説明

REGEXP_REPLACE は正規表現で置き換えます。文字どおりの置き換えでよいなら REPLACE のほうが速く、読みやすくなります。

⚠️ 既定では最初に見つかった 1 つしか置き換えません。REPLACE がすべて置き換えるのとなので、乗り換えたときにここで必ず引っかかります。すべて置き換えるには第 4 引数に 'g'(global)を渡してください。

使えるフラグは他にもあり、'i' は大文字小文字を無視します。組み合わせて 'gi' と書けます。

⚠️ 正規表現の方言は製品ごとに違います。後方参照の書き方(\1$1)も揃っていないので、移植するときは必ず動かして確かめてください。

次に読む

根拠にした一次情報