SQLite | SQLite関数 | 文字列の先頭と末尾から文字を削除する(trim関数、rtrim関数、ltrim関数)

trim関数は文字列の先頭と末尾から空白を削除します。rtrim関数とltrim関数も同様に動作します。ここでは、これらの関数の使い方を説明します。

trim関数の使い方

trim関数は文字列の両端から指定した文字を削除します。

trim(文字列)
trim(文字列, 文字)

引数が1つの場合、trimは文字列の先頭と末尾に連続する空白を削除します。

注意
文字列の先頭と末尾の空白は削除されますが、文字列の途中にある空白は削除されません。

引数に列を指定すると、先頭と末尾の空白を除いた値を返します。第2引数を指定すると、空白の代わりにその文字を両端から削除します。

rtrim関数は文字列の末尾から、ltrim関数は先頭から指定した文字を削除します。

rtrim(文字列)
rtrim(文字列, 文字)
ltrim(文字列)
ltrim(文字列, 文字)

例で使用するテーブルを作成します。

create table msgdb (id integer, msg text);
sqlite> create table msgdb (id integer, msg text);
sqlite> 

次のデータを追加します。

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> 

trimltrimrtrimを使い、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関数)を参照してください。

次に、第2引数にアンダースコア(_)を指定し、各値の対応する端からアンダースコアを削除します。

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> 

最後の行では、trimが両端、ltrimが先頭、rtrimが末尾のアンダースコアを削除しています。