コマンド道場

$ 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_nameokikae
ノートノート
ボールペンボールPEN
付箋付箋
デスクチェアデスクチェア
書棚書棚
デスクライトデスクライト
キーボードキーボード

7

空文字に置き換えて削除する
SELECT kokyaku_name, REPLACE(kokyaku_name, '株式会社', '') AS kesu FROM kokyaku ORDER BY kokyaku_id
kokyaku_namekesu
青葉工業青葉工業
白樺物産白樺物産
黒松システム黒松システム
赤坂商会赤坂商会
三田商事三田商事

5

説明

REPLACE は、対象の中に現れる文字列をすべて置き換えます。「最初の 1 つだけ」という指定はできません。

3 つの引数はすべて文字列です。正規表現ではありませんので、.* もそのままの文字として扱われます。パターンで置き換えたいときは REGEXP_REPLACE を使います。

置き換える文字列に空文字を渡せば、削除になります。ハイフン入りの電話番号や、カンマ入りの金額をそろえるときによく使う書き方です。

⚠️ 引数のどれかが NULL なら結果も NULL です。元の列が NULL かもしれない場合は COALESCE で埋めてから渡してください。

次に読む

根拠にした一次情報