SQLite | SQLite 함수 | 문자열에서 일부분 추출 (substr 함수)

substr 함수를 사용하면 문자열의 지정된 위치에서 지정된 길이의 부분 문자열을 받아올 수 있다. 여기에서는 substr 함수의 사용법에 대해 설명한다.

 

substr 함수 사용법

substr 함수는 문자열에서 부분 문자열을 받아오는데 사용한다. 형식은 다음과 같다.

substr(문자열, 시작 위치, 문자의 길이)
substr(문자열, 시작 위치)

첫 번째의 인수로 지정된 문자열 중에서 부분 문자열을 받아온다. 받아온 부분 문자열은 두 번째의 인수로 지정된 위치에서 세 번째 인수에 지정된 길이의 문자열을 받아온다. 세 번째 인수를 생략하면 시작 위치에서 문자열의 끝까지의 문자열을 받아온다.

시작 위치는 첫 글자가 1이고, 두 번째 문자가 2로 이어진다. 또한 시작 위치에 음수 값을 지정할 수도 있다. 음수 값으로 지정하면 마지막 문자가 -1되고 마지막에서 두 번째 문자가 -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 */

첫 번째 인수에 컬럼명을 지정하면 컬럼에 저장된 값의 부분 문자열을 받아온다.

그러면 실습을 해보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.

create table user (id integer, name text, address text);
sqlite> create table user (id integer, name text, address text);
sqlite> 

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

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> 

컬럼에 저장되는 값의 지정한 위치로부터 지정한 길이의 부분 문자열을 받올 수 있었다.

이번에는 substr 함수를 사용하여 address 컬럼에 저장되는 값 중에서 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> 

컬럼에 저장되는 값의 지정한 위치부터 끝까지의 부분 문자열을 받아올 수 있었다.




최종 수정 : 2019-11-13