文字型

PosgtreSQL で利用できるデータ型の中で文字型の使い方について解説します。文字型には可変長文字型(character varying, varchar)、固定長文字型(character, char)、制限なし可変文字型(text)が含まれます。

(Last modified: )

文字型の使い方

文字型は次のようなデータ型が用意されています。

character varying(n)
可変長文字列
別名:varchar(n)

character(n)
固定長文字列
別名:char(n)

text
制限なし可変長

character varying(n) は可変長の文字型です。最大文字数(n)までの文字を格納できます。 character(n) は固定長の文字型です。格納する値が n 文字に満たない場合は空白で埋められます。

どちらのデータ型も n 文字よりも長い文字列を格納しようとするとエラーとなりますが、 n 文字よりも長い部分がすべて空白の場合は n 文字分だけ格納されます。

長さを指定せずに character varying と記述した場合は文字数の制限がないものとみなされます。また長さを指定せずに character と記述した場合は character(1) とみなされます。

text 型は長さに制限のない可変長文字型です。非常に長い文字列を格納する場合などに使用します。

-- --

例として次のようなテーブルを作成しました。

create table strtest (str1 varchar(10), str2 char(10));

文字型(1)

作成したテーブルに次のようなデータを追加します。

insert into strtest values('hoge', 'hoge');
insert into strtest values('  hoge  ', '  hoge  ');

文字型(2)

1 つ目のデータは 'hoge' という文字列をそれぞれ格納しています。 2 つ目のデータは文字列の前後に空白がそれぞれ 2つ ある '  hoge  'という文字列を格納しています。それではテーブルからデータを取得します。値を取得すると同時に char_length 関数を使って文字数を合わせて表示しています。

select str1, char_length(str1), str2, char_length(str2) from strtest;

文字型(3)

可変長文字列( str1 )の方は SELECT で取得すると格納した文字列が前後の空白も含めてそのまま取得されています。それに対して固定長文字列( str2 )の方は SELECT で取得すると文字列の前の空白はそのままですが文字列の最後にある空白はすべて取り除かれて取得されています。

これが仕様通りなのかどうか分かりませんでしたが、実際に試して結果はこのようになりました。

-- --

PosgtreSQL で利用できるデータ型の中で文字型の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。