説明
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の動作と互換性があります。