SQLite | SQLite 함수 | 문자열의 시작과 끝에서 공백 제거 (trim 함수, rtrim 함수, ltrim 함수)
trim 함수를 사용하면 문자열의 시작과 끝에서 공백을 제거할 수 있다. rtrim 함수, ltrim 함수도 비슷하게 동작한다. 여기에서는 trim 함수의 사용법에 대해 설명한다.
trim 함수 사용법
trim 함수는 문자열 앞뒤에서 지정한 문자를 제거하는데 사용한다. 형식은 다음과 같다.
trim(문자열)
trim(문자열, 문자)
trim 함수 지정된 문자열의 처음과 마지막에 있는 공백을 제거하는데 사용한다. 구체적으로 문자열의 처음 부분이 공백이라면 공백 문자가 아닌 문자까지의 공백을 모두 제거한다. 또한 마찬가지로 문자열의 마지막이 공백이라면 뒤에서 마지막 문자까지의 공백을 모두 제거한다.
주의 사항
문자열의 시작 부분과 끝 부분의 공백 문자를 제거하지만, 문자열 중간에 있는 공백은 제거되지 않는다.
인수에 컴럼을 지정한 경우에는 컴럼에 저장된 값에서 처음과 마지막의 공백을 제거하고 받아온다.
또한 두 번째 인수에 문자를 지정하면 공백 문자가 아닌 두 번째 인수로 지정한 문자를 문자열의 앞뒤로 제거한다.
비슷하게 사용되는 함수로는 rtrim 함수 ltrim 함수가 있다. rtrim 함수는 문자열의 끝에서부터 지정된 문자를 제거하는데 사용한다. ltrim 함수는 문자열의 시작 부분에서 지정된 문자를 제거하는 데 사용한다. 형식은 다음과 같다.
rtrim(문자열)
rtrim(문자열, 문자)
ltrim(문자열)
ltrim(문자열, 문자)
–
그러면 실습을 해보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.
create table msgdb (id integer, msg text);
sqlite> create table msgdb (id integer, msg text);
sqlite>
INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.
insert into msgdb values(1, ' Hello! ');
insert into msgdb values(2, ' Good Bye ');
insert into msgdb values(3, '__Thank you__');
sqlite> insert into msgdb values(1, ' Hello! ');
sqlite> insert into msgdb values(2, ' Good Bye ');
sqlite> insert into msgdb values(3, '__Thank you__');
sqlite>
그러면 trim 함수 및 ltrim 함수와 rtrim 함수를 사용하여 msg 컬럼에 저장된 문자열에서 처음과 끝에 있는 공백을 제거한 문자열을 받아온다.
select id, quote(trim(msg)), quote(ltrim(msg)), quote(rtrim(msg)) from msgdb;
sqlite> select id, quote(trim(msg)), quote(ltrim(msg)), quote(rtrim(msg)) from msgdb;
id quote(trim(msg)) quote(ltrim(msg)) quote(rtrim(msg))
---------- ---------------- ----------------- -----------------
1 'Hello!' 'Hello! ' ' Hello!'
2 'Good Bye' 'Good Bye ' ' Good Bye'
3 '__Thank you__' '__Thank you__' '__Thank you__'
sqlite>
결과를 알아 보기 쉽게 quote 함수를 사용하여 받아온 값을 작은 따움표를 둘려싸서 표시하고 있다. 컬럼에 저장되는 문자열의 시작과 끝에 있는 공백을 제거된 것을 확인할 수 있다. (quote 함수에 대해서는 문자열을 작은 따옴표로 감싸기 (quote 함수)를 참조한다).
이번에는 trim 함수, ltrim 함수, rtrim 함수를 사용하여 msg 컬럼에 저장되는 값 중에서 처음과 끝에 있는 밑줄 (_)을 제거한 문자열을 받아온다.
select id, trim(msg, '_'), ltrim(msg, '_'), rtrim(msg, '_') from msgdb;
sqlite> select id, trim(msg, '_'), ltrim(msg, '_'), rtrim(msg, '_') from msgdb;
id trim(msg, '_') ltrim(msg, '_') rtrim(msg, '_')
---------- -------------- --------------- ---------------
1 Hello! Hello! Hello!
2 Good Bye Good Bye Good Bye
3 Thank you Thank you__ __Thank you
sqlite>
테이블에 저장되어 있는 마지막 데이터에서 컬럼에 저장되는 값의 시작과 끝의 밑줄(_)을 제거한 문자열이 표시되었다.