SQLite | SQLite関数 | 文字列から一部を抽出する(substr関数)
substr関数は、文字列の指定した位置から指定した長さの部分文字列を返します。ここでは、substr関数の使い方を説明します。
substr関数の使い方
構文は次のとおりです。
substr(文字列, 開始位置, 文字数)
substr(文字列, 開始位置)
第1引数の文字列から、第2引数の位置を起点として第3引数の長さだけ抽出します。第3引数を省略すると、開始位置から文字列の末尾までを返します。
位置は最初の文字が1、2番目が2です。負の値では末尾から数え、-1が最後の文字、-2が後ろから2番目の文字です。
substr('database', 1, 3); /* dat */
substr('database', 1, 4); /* data */
substr('database', 5, 3); /* bas */
substr('database', 5); /* base */
substr('database', -3, 2); /* as */
第1引数に列名を指定すると、列に保存されている各値から部分文字列を取得します。
–
例で使用するテーブルを作成します。
create table user (id integer, name text, address text);
sqlite> create table user (id integer, name text, address text);
sqlite>
次のデータを追加します。
insert into user values (1, 'devkuma', '01:Seoul ');
insert into user values (2, 'kimkc', '02:Busan');
insert into user values (3, 'araikuma', '03:Daejeon');
insert into user values (4, 'happykuma', '01:Seoul ');
insert into user values (5, 'raccoon', '04:Paju ');
sqlite> insert into user values (1, 'devkuma', '01:Seoul ');
sqlite> insert into user values (2, 'kimkc', '02:Busan');
sqlite> insert into user values (3, 'araikuma', '03:Daejeon');
sqlite> insert into user values (4, 'happykuma', '01:Seoul ');
sqlite> insert into user values (5, 'raccoon', '04:Paju ');
sqlite>
substr関数で、address列の各値の4文字目から3文字を抽出します。
select id, name, substr(address, 4, 3) from user;
sqlite> .mode column
sqlite> .header on
sqlite>
sqlite> select id, name, substr(address, 4, 3) from user;
id name substr(address, 4, 3)
---------- ---------- ---------------------
1 devkuma Seo
2 kimkc Bus
3 araikuma Dae
5 raccoon Paj
4 happykuma Seo
sqlite>
指定した位置から指定した長さの部分文字列が返されました。
次に長さを省略し、4文字目から末尾までを抽出します。
select id, name, substr(address, 4) from user;
sqlite> select id, name, substr(address, 4) from user;
id name substr(address, 4)
---------- ---------- ------------------
1 devkuma Seoul
2 kimkc Busan
3 araikuma Daejeon
5 raccoon Paju
4 happykuma Seoul
sqlite>
指定した位置から文字列の末尾までが返されました。