MySQL の REPLACE()
ここでは MySQL の REPLACE() 関数についてご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
MySQL の REPLACE() 関数の使い方
MySQL の REPLACE() 関数は、文字列を三つ引数として受け取り、一つ目の引数の文字列の中の、二つ目の引数の文字列を、三つ目の引数の文字列に置換する関数です。
REPLACE(str,from_str,to_str)
少し注意しないといけないのは、この REPLACE() 関数はケースセンシティブで大文字小文字を区別して文字列を検索して置換する点です。
MySQL のデフォルトの照合順序 (collation) はケースセンシティブではないので、たとえば LIKE 'a%' のように指定すると大文字 A か小文字の a で始まる文字列がマッチします。
ですが、REPLACE の場合は第二引数に 'a' と指定すると小文字の a しか置き換えられません。
それでは、REPLACE() 関数を使ってみます。
students テーブルの first_name の 'a' という文字列を 'XXX' に置換するには、次のようにできます。
SELECT first_name,
REPLACE(first_name, 'a', 'XXX')
FROM students;
[実行結果]
REPLACE(first_name, 'a', 'XXX') は first_name の小文字の 'a' を 'XXX' に置換した文字列を返しています。
'Aya' は 'AyXXX' のようになり、大文字の 'A' は置換されていません。
REPLACE() 関数は文字列に入っている、タブや改行を削除したり時にも便利です。
たとえば、students テーブルの first_name の中に改行が入っている可能性があって、それを削除したい時には次のように削除できます。
UPDATE students
SET first_name = REPLACE(REPLACE(first_name, '\r', ''), '\n', '');
以上、MySQL の REPLACE() 関数についてご説明しました。