substr関数

広告

substr関数は文字列から部分文字列を取得するために使用します。書式は次の通りです。

substr(文字列, 開始位置, 文字の長さ)
substr(文字列, 開始位置)

1番目の引数に指定した文字列の中から部分文字列を取得します。取得する部分文字列は2番目の引数で指定した位置から3番目の引数で指定した長さの文字列を取得します。3番目の引数を省略した場合は開始位置から文字列の最後までの文字列を取得します。

開始位置は最初の文字が1となり、2番目の文字が2と続いていきます。なお開始位置に負の値を指定することもできます。負の値で指定する場合、最後の文字が-1となり最後から2番目の文字が-2と続いていきます。

具体的には次のように使用します。

select substr('database', 1, 3);    /* dat */
select substr('database', 1, 4);    /* data */
select substr('database', 5, 3);    /* bas */
select substr('database', 5);       /* base */
select substr('database', -3, 2);   /* as */

このSELECT文では'database'という文字列から開始位置と文字の長さによって決まる部分文字列を返します。

また下記のようにカラムを指定した場合は、カラムに格納されている値を小文字または大文字に変換します。

create table goods(id integer, name text);

select substr(name, 1, 4) from goods;

このSELECT文では「name」カラムに含まれる値の先頭から4文字文を取得します。

サンプル

では実際に試してみます。

select
substr('database', 1, 3), 
substr('database', 5), 
substr('database', -3, 2);

p13-1

'database'という文字列から部分文字列をいくつか取得してしています。

今度は次のようなデータが格納されたテーブルを対象にします。

p13-2

では「en」カラムに格納されている値の先頭から3文字文だけを取得してみます。

select en, substr(en, 1, 3) from dict;

p13-3

対象のカラムの値の先頭から3文字文だけを取得できました。

( Written by Tatsuo Ikura )