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> 

列に保存されている値の20182019に置換した結果を取得できました。

第1引数に文字列を直接指定することもできます。

select replace('My first birthday', ' ', '_');
sqlite> select replace('My first birthday', ' ', '_');
replace('My first birthday', ' ', '_')
--------------------------------------
My_first_birthday                     
sqlite> 

文字列内の空白(' ')がアンダースコア(_)に置換されました。