MariaDBでサブ文字列を別の文字列に置き換える必要がある場合は、次の2つの方法を使用できます。
REPLACE() 機能
MariaDBでは、REPLACE() 関数は、別の文字列内の部分文字列を置き換えるように特別に設計されています。
関数を呼び出すときに3つの引数を指定します。これらは、文字列、サブ文字列、および置換文字列です。
例:
SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat'); 結果:
+----------------------------------------------------+
| REPLACE('My dog likes to dig holes', 'dog', 'cat') |
+----------------------------------------------------+
| My cat likes to dig holes |
+----------------------------------------------------+
この場合、サブストリングdogを置き換えました catを使用 。
置換される文字列が文字列内で複数回出現する場合、すべての出現が置換されます:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat'); 結果:
+----------------------------------------------------+
| REPLACE('Black dogs and white dogs', 'dog', 'cat') |
+----------------------------------------------------+
| Black cats and white cats |
+----------------------------------------------------+
REPLACE() 関数は大文字と小文字を区別する一致を実行します。
REPLACE()の方法をご覧ください その他の例については、MariaDBで動作します。
REGEXP_REPLACE() 機能
REGEXP_REPLACE() 関数はREPLACE()に似ています 関数。ただし、正規表現を使用してパターンマッチングを実行できます。
これにより、REGEXP_REPLACE()が作成されます REPLACE()よりも強力 、文字列の一部と照合して、REPLACE()を使用するだけでは照合が困難または不可能な部分文字列を置き換えることができるため 。
例:
SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog'); 結果:
+-------------------------------------------------+
| REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') |
+-------------------------------------------------+
| My dog has dogs |
+-------------------------------------------------+
正規表現は非常に強力である可能性があり、この例では非常に単純な例を使用しています。 REGEXP_REPLACE()を使用するには 事実上、望ましい結果を得るために使用する正しいパターンを知る必要があります。
REPLACE()で使用するのと同じように、完全なリテラル文字列をパターンとして提供することもできます。 機能。
したがって、このページの最初の例を、REGEXP_REPLACE()を使用するように書き直すことができます。 REPLACE()の代わりに 。
これが私が何を意味するかを説明するためにそれらを並べて実行する例です:
SELECT
REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()"; 結果:
+---------------------------+---------------------------+ | REPLACE() | REGEXP_REPLACE() | +---------------------------+---------------------------+ | My cat likes to dig holes | My cat likes to dig holes | +---------------------------+---------------------------+
また、REGEXP_REPLACE() 関数は、効果的な照合の大文字と小文字の区別の規則に従います。照合は、大文字と小文字を区別しない照合では大文字と小文字を区別せずに、大文字と小文字を区別する照合とバイナリデータでは大文字と小文字を区別して実行されます。ただし、照合の大文字と小文字の区別は、(?iを使用してオーバーライドできます。 )および(?-i )PCREフラグ。
REGEXP_REPLACE()の方法をご覧ください 大文字と小文字の区別などの例については、MariaDBで動作します。