説明
REPLACE() 関数は、文字列内の部分文字列を置き換えるために使用されます。この関数は、str 内のすべての from_str を検索し、それらを to_str に置き換えます。str 内でマッチする from_str が見つからない場合、元の文字列は変更されません。
REPLACE()のいずれかのパラメータがNULLの場合、結果はNULLを返します。REPLACE()関数は大文字小文字を区別します。つまり、文字列の大文字と小文字を考慮します。大文字小文字を区別しない置き換えを行いたい場合は、REPLACE(UPPER(str), UPPER(from_str), to_str)またはREPLACE(LOWER(str), LOWER(from_str), to_str)を使用して、大文字小文字を無視して置き換えを実行できます。REPLACE()関数はマルチバイトセーフです。
構文
REPLACE(str, from_str, to_str)
パラメータ説明
パラメータ |
必須/オプション |
説明 |
|---|---|---|
str |
必須 | 置き換える元となる文字列。 |
from_str |
必須 | 置き換える部分文字列。 |
to_str |
必須 | 置き換え後の文字列。 |
例
- 例1:次のクエリ例では、
REPLACE関数を使用して、元の文字列内のすべてのサブ文字列abc.をwwwに置き換えます。
obclient> SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www');
結果は次のとおりです:
+---------------------------------------------------------+
| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www') |
+---------------------------------------------------------+
| wwwefg.gpg.nowdew.wwwdwwwe |
+---------------------------------------------------------+
1 row in set
- 例2:次のクエリ例では、
REPLACE関数を使用して、元の文字列内のNULLをwwwに置き換えます。置き換えるサブ文字列がNULLであるため、式全体の結果はNULLを返します。
obclient> SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', NULL, 'www');
結果は次のとおりです:
+-------------------------------------------------------+
| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', NULL, 'www') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
1 row in set
- 例3:次のクエリ例では、
REPLACE関数を使用して、元の文字列内のabc.をWWWに置き換えます。REPLACE()関数は大文字小文字を区別するため、式全体の結果はWWWefg.gpg.nowdew.WWWdWWWeを返します。
obclient> SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'WWW');
結果は次のとおりです:
+---------------------------------------------------------+
| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'WWW') |
+---------------------------------------------------------+
| WWWefg.gpg.nowdew.WWWdWWWe |
+---------------------------------------------------------+
1 row in set
- 例4:次のクエリ例では、
Hello Worldは大文字のHELLO WORLDに変換され、worldも大文字に変換されます。したがって、このクエリは結果HELLO Universeを返します。これは、大文字のWORLDをUniverseに置き換えるためです。
obclient> SELECT REPLACE(UPPER('Hello World'), UPPER('world'), 'Universe');
結果は次のとおりです:
+-----------------------------------------------------------+
| REPLACE(UPPER('Hello World'), UPPER('world'), 'Universe') |
+-----------------------------------------------------------+
| HELLO Universe |
+-----------------------------------------------------------+
1 row in set
MySQL互換性
REPLACE() 関数の動作はバージョンによって異なります。MySQL 5.7では、2番目のパラメータが ''(空文字列)、3番目のパラメータが NULL の場合、結果は最初のパラメータとなります。一方、MySQL 8.0では、結果は NULL となります。OceanBase 4.2.1 およびそれ以前のバージョンは、このMySQL 8.0の動作と互換性があります。