SQLite | SQLite関数 | 文字列の一部を別の文字列に置換する(replace関数)
replace関数を使用すると、文字列の一部を別の文字列に置換した値を取得できます。ここでは、replace関数の使い方について説明します。
replace関数の使い方
replace関数は、文字列の一部を別の文字列に置換するために使用します。構文は次のとおりです。
replace(対象文字列, 置換対象文字列, 置換後文字列)
第1引数の文字列に含まれる第2引数の文字列を、すべて第3引数の文字列に置換して返します。テーブル内のデータ自体を更新するわけではない点に注意してください。
第1引数に列を指定すると、その列に保存されている各値について、第2引数の文字列を第3引数の文字列に置換した値を返します。
–
実際に文字列を置換してみましょう。まず、次のテーブルを作成します。
create table report (id integer, name text);
sqlite> create table report (id integer, name text);
sqlite>
INSERT文を使用して次のデータを追加します。
insert into report values (1, 'report_2018_Seoul');
insert into report values (2, 'report_2018_Daejeon');
insert into report values (3, 'report_2018_Busan');
insert into report values (4, 'report_2017_Paju');
sqlite> insert into report values (1, 'report_2018_Seoul');
sqlite> insert into report values (2, 'report_2018_Daejeon');
sqlite> insert into report values (3, 'report_2018_Busan');
sqlite> insert into report values (4, 'report_2017_Paju');
sqlite>
replace関数を使用して、name列の値に含まれる2018をすべて2019に置換した値を取得します。
select name, replace(name, '2018', '2019') from report;
sqlite> .mode column
sqlite> .header on
sqlite>
sqlite> select name, replace(name, '2018', '2019') from report;
name replace(name, '2018', '2019')
----------------- -----------------------------
report_2018_Seoul report_2019_Seoul
report_2018_Daeje report_2019_Daejeon
report_2018_Busan report_2019_Busan
report_2017_Paju report_2017_Paju
sqlite>
列に保存されている値の2018を2019に置換した結果を取得できました。
第1引数に文字列を直接指定することもできます。
select replace('My first birthday', ' ', '_');
sqlite> select replace('My first birthday', ' ', '_');
replace('My first birthday', ' ', '_')
--------------------------------------
My_first_birthday
sqlite>
文字列内の空白(' ')がアンダースコア(_)に置換されました。