文字列を単語の単位で置換する

syntax

REPLACE ( string , search [, replace] )
return [ string ]

parameter

string置換する対象の文字列全体
search置換したい検索単語
replace置換後の単語default NULL

return

  • 検索単語を置換後の単語に置換した文字列

avail

  • SQL および PL/SQL の両方で使用可能。

REPLACE 関数の内容

文字列 string 中の 検索文字列 search をすべて 置換文字列 replace に置換する。(replace 省略時には文字列は削除される)
NULL をパラメータとした反応は通常の関数と異なる。置換文字列 replace を NULL にすると 検索文字列 search は削除される。
検索文字列 search を NULL にすると 文字列 string がそのまま戻される。
置換できるのは1つの単語のみで、TRANSLATE のように一回の呼び出しで複数文字を特定文字へと置換することはできない。

REPLACE 使用例

TRANSLATE 関数 との比較サンプル

SQL> set null '<NULL>'
 
select
 str, srch, repl, REPLACE(str, srch, repl) REPLACE_STR,
 translate(str, srch, repl) TRANS_STR
from (
select 'abc' str, 'ab' srch, '単語単位' repl from dual union all
select 'abccba',  'ab', '変換' from dual union all
select 'abccba',  'abc', '単語' from dual union all
select '123', '456', null from dual union all
select null, null, '△' from dual union all
select 'あいうえお', 'あいうえお', 'ア-オ' from dual union all
select 'ぱぴぷぷぴぽ', 'ぱぴぷ', 'パピプ' from dual union all
select 'パピプペポ', 'パピプペポ', 'ぱぴぷぺぽ' from dual union all
select decompose('ぱぴぷぺぽ'), decompose('ぱぴぷぺぽ'), 'ぱぴぷぺぽ' from dual
);
 
 
STR              SRCH             REPL         REPLACE_STR      TRANS_STR
---------------- ---------------- ------------ ---------------- ----------------
abc              ab               単語単位     単語単位c        単語c
abccba           ab               変換         変換ccba         変換cc換変
abccba           abc              単語         単語cba          単語語単
123              456              <NULL>       123              <NULL>
<NULL>           <NULL>           △           <NULL>           <NULL>
あいうえお       あいうえお       ア-オ        ア-オ            ア-オ
ぱぴぷぷぴぽ     ぱぴぷ           パピプ       パピプぷぴぽ     パヒピぽ
パピプペポ       パピプペポ       ぱぴぷぺぽ   ぱぴぷぺぽ       ぱぴぷぴぽぴぴぴ                       
ぱぴぷぺぽ       ぱぴぷぺぽ       ぱぴぷぺぽ   ぱぴぷぺぽ       ぱぴぷぴぽぴぴぴ

SQL*Plus の NULL 表示

置換後の単語 replace の指定が無い場合
文字列 'abcdef' から 検索単語 'abc' を '' に置換する。

SQL> select REPLACE('abcdef', 'abc') from dual;
 
REPLACE
------
def

NVL 関数 のように NULL を別の値には変換できない。

SQL> set null '<NULL>'
SQL> select REPLACE('', '', 'is null') is_null, nvl('', 'is null') nvl
  2   from dual;
 
IS_NULL          NVL
---------------- --------------
<NULL>           is null

置換後の単語 replace にならば NULL を指定しても動作する。(※)

SQL> select REPLACE('abccbabc', NULL, NULL) from dual;
 
REPLACE
----------------
abccbabc

検索単語 'abc' を ''(NULL) に置換する。

SQL> select REPLACE('abccbabc', 'abc', NULL) from dual;
 
REPL
----
cb

(※) NULL を指定するより 長さ0の文字列('') を指定する方がよいだろう。

 


SQL 関数 - REPLACE 関連

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト