MariaDBでは、REPLACE()
は、文字列の一部を別の文字列に置き換えることができる組み込みの文字列関数です。
この関数は、文字列、置換する部分文字列、および部分文字列を置換する文字列の3つの引数を受け入れます。
構文
構文は次のようになります:
REPLACE(str,from_str,to_str)
str
は文字列であり、from_str
置換する部分文字列であり、to_str
その部分文字列を置き換える文字列です。
例
基本的な例は次のとおりです。
SELECT REPLACE('Black dog', 'dog', 'cat');
結果:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
この場合、サブストリング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()
文字列を変更せずに返します:
SELECT REPLACE('Black dog', 'horse', 'cat');
結果:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
大文字と小文字の区別
REPLACE()
関数は大文字と小文字を区別して一致を実行します:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
結果:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
この例では、ケースが一致しなかったため、何も置き換えられませんでした。
空の文字列
指定された引数ごとに空の文字列が渡されると、次のようになります。
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
結果:
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
したがって、この場合:
- 最初の文字列に空の文字列を渡すと、空の文字列が返されます。
- 2番目の引数に空の文字列を渡すと、元の文字列が返されます。
- 3番目の引数に空の文字列を渡すと、置き換えられる文字列が文字列から削除されます。
スペース文字
空の文字列はスペース文字と同じではありません。
空の文字列をスペースに変更すると、次のようになります。
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
結果:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
したがって、文字列がスペースにすぎない場合は、それを別の文字列に置き換えることができます。
SELECT REPLACE(' ', ' ', 'cat');
結果:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
ヌル引数
null
を提供する 結果はnull
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
結果:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
引数がありません
REPLACE()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT REPLACE();
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1