カテゴリ:

文字列とバイナリ関数 (マッチング/比較)

REPLACE

指定されたサブ文字列のすべての出現を削除し、オプションでそれらを別のサブ文字列に置き換えます。

構文

REPLACE( <subject> , <pattern> [ , <replacement> ] )
Copy

引数

subject

サブジェクトは、置換を行う文字列です。通常、これは列ですが、リテラルにすることができます。

pattern

これは、置き換えるサブ文字列です。通常、これはリテラルですが、列または式にすることができます。これは「正規表現」ではありません。正規表現を使用してパターンを検索する場合は、 REGEXP_REPLACE 関数を使用します。

replacement

これは、 pattern の代替として使用される値です。これが省略されているか、空の文字列である場合、 REPLACE 関数は pattern のすべての出現を削除します。

戻り値

返される値は、すべての置換が行われた後の文字列です。

使用上の注意

  • replacement が指定されていない場合は、 subject が返され、 pattern のすべての出現が削除されます。

  • replacement が指定されている場合は、 pattern のすべての出現 replacement に置き換えられた subject が返されます。

  • 引数のいずれかが NULL の場合は、結果も NULL です。

注釈

元の subject の出現のみが考慮されます。結果に現れる pattern は削除/置換されません。

照合の詳細

The collation specifications of all input arguments must be compatible.

この関数は、次の照合順序仕様をサポートしません。

  • pi (句読点は区別しない)。

  • cs-ai (大文字と小文字は区別、アクセント記号は区別しない)。

注釈

upper または lower 照合順序指定子を持つ列でこの関数を使用するには、 アカウントで2024_02動作変更バンドルを有効にする 必要があります。

アカウントでこのバンドルを有効にするには、以下のステートメントを実行します。

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Copy

文字列 down を文字列 up に置き換えます。

SELECT REPLACE('down', 'down', 'up');
Copy
+-------------------------------+
| REPLACE('DOWN', 'DOWN', 'UP') |
|-------------------------------|
| up                            |
+-------------------------------+

文字列 Vacation in Athens のサブ文字列 Athens をサブ文字列 Rome に置き換えます。

SELECT REPLACE('Vacation in Athens', 'Athens', 'Rome');
Copy
+-------------------------------------------------+
| REPLACE('VACATION IN ATHENS', 'ATHENS', 'ROME') |
|-------------------------------------------------|
| Vacation in Rome                                |
+-------------------------------------------------+

文字列 abcd のサブ文字列 bc を空拍のサブ文字列に置き換えます。

SELECT REPLACE('abcd', 'bc');
Copy
+-----------------------+
| REPLACE('ABCD', 'BC') |
|-----------------------|
| ad                    |
+-----------------------+

テーブルの値を新しい値に置き換えます。

テーブルを作成し、テーブルに入力します。

CREATE OR REPLACE TABLE replace_example(
  subject VARCHAR(10),
  pattern VARCHAR(10),
  replacement VARCHAR(10));

INSERT INTO replace_example VALUES
  ('old car', 'old car', 'new car'),
  ('sad face', 'sad', 'happy'),
  ('snowman', 'snow', 'fire');
Copy

値の文字列を指定の置換に置き換えます。

SELECT subject,
       pattern,
       replacement,
       REPLACE(subject, pattern, replacement) AS new
  FROM replace_example
  ORDER BY subject;
Copy
+----------+---------+-------------+------------+
| SUBJECT  | PATTERN | REPLACEMENT | NEW        |
|----------+---------+-------------+------------|
| old car  | old car | new car     | new car    |
| sad face | sad     | happy       | happy face |
| snowman  | snow    | fire        | fireman    |
+----------+---------+-------------+------------+

出力は以下の置換を示します。

  • 文字列 old car が文字列 new car に置き換えられました。

  • 文字列 sad face で、サブ文字列 sad がサブ文字列 happy に置き換えられ、新しい文字列 happy face が作成されました。

  • 文字列 snowman で、サブ文字列 snow がサブ文字列 fire に置き換えられ、新しい文字列 fireman が作成されました。