8.3. 文字型

表8-4. 文字型

Name Description
文字 varying(n), varchar(n) 可変長 with limit
文字(n)です。 char(n) 固定長、空白パディング
テキスト 可変長

表8-4にPostgreSQLで利用できる汎用文字型が示されています。

SQLでは、character varying(n)とcharacter(n)(renは正の整数)の2種類の主要な文字型を定義しています。 これらの型は両方とも長さがn文字(バイトではありません)までの文字列を格納することができます。 これより長い文字列をこれらの型の列に格納しようとすると、エラーになります。ただし、過剰な文字がすべて空白である場合は、文字列は最大長に切り詰められます(このやや奇妙な例外は、標準SQLで要求されています)。

もし明示的にcharactervarying(n)またはcharacter(n)に値をキャストすれば、長すぎる値はエラーにならずにn文字に切り詰められます。 (Thistoo は SQLstandard で要求されています。)

varchar(n) および char(n) という表記は、それぞれ character varying(n) および character(n) のエイリアスです。 charactervaryingが長さ指定子なしで使われた場合、この型は任意のサイズの文字列を受け付けます。 後者はPostgreSQLの拡張です。

さらに、PostgreSQLは任意の長さの文字列を格納するtext型を提供します。

文字型の値は物理的に指定された幅nまで空白で埋められ、そのように保存、表示されます。 末尾の空白は,character型の2つの値を比較する際には無視され,character型の値を他の文字列型の1つに変換する際には除去される。

短い文字列 (126 バイトまで) に必要なストレージは、1 バイトと実際の文字列 (character の場合はスペースパディングを含む) である。 長い文字列はシステムによって自動的に圧縮されるため、ディスク上の物理的な必要量は少なくなる可能性があります。 いずれにせよ、保存できる最長文字列は約1GBです(データ型宣言でnに許される最大値はこれより小さくなります)。 マルチバイト文字エンコーディングでは、文字数とバイト数がかなり異なることがあるため、これを変更することは有益ではないでしょう。 もし、特定の上限がない長い文字列を格納したい場合は、任意の長さの制限を作るのではなく、長さ指定子なしでテキストまたは文字を変化させることを使用してください)

Tip: Blank-padded 型を使用するときにストレージ容量が増えて、長さに制約のある列に格納するときに長さを確認するために CPU サイクルが少し余分になる以外、これら 3 種類の型の間に性能差はないです。 他のデータベースシステムではcharacter(n)に性能上の利点がありますが、PostgreSQLではそのような利点はありません。 実際、character(n)は追加の格納コストのために、通常3種類の中で最も遅いです。 ほとんどの場合、stextまたはcharactervaryingを代わりに使用すべきです。

文字列リテラルの構文に関する情報は項4.1.2.1、使用できる演算子や関数に関する情報は章9を参照してください。 文字セットのサポートに関する詳細については、項22.3.

例8-1を参照してください。 (1) char_length関数については、9.4節で説明します。

表8-5に示すように、PostgreSQLには他に2つの固定長の文字型があります。 name型は内部システムカタログの識別子を格納するためにのみ存在し、一般ユーザが使用することは意図されていません。 その長さは現在64バイト(63文字+ターミネータ)と定義されていますが、Cソースコードでは定数NAMEDATALENを使用して参照されるべきです。 長さはコンパイル時に設定されます(したがって、特殊な用途には調整可能です)。将来のリリースでは、デフォルトの最大長が変更される可能性があります。 char型(引用符に注意)はchar(1)と異なり、1バイトのストレージしか使用しません。 これは単純化された列挙型としてシステムカタログで内部的に使用されています。 特殊文字型

名前 格納サイズ 説明
“char” 1 byte シングル-1″1byte
名前 64バイト オブジェクト名の内部型

コメントを残す

メールアドレスが公開されることはありません。