概要:このチュートリアルでは、CHAR
、VARCHAR
、TEXT
を含む PostgreSQL の文字データ型について学び、テーブルに適した文字型を選択する方法を学びます。 CHARACTER(n)
または CHAR(n)
、CHARACTER VARYINGING(n)
または VARCHAR(n)
、そして TEXT
(n
は正の整数です)。
次の表はPostgreSQLの文字型を説明したものです。
文字型 | 説明 |
CHARACTER VARYING(n) 、VARCHAR(n) |
variable-length with length limit |
CHARACTER(n) の順となりました。 CHAR(n) |
固定長、空白パディング |
TEXT , VARCHAR |
可変長無制限 |
CHAR(n)
およびVARCHAR(n)
はともに最大n
文字まで格納可能です。 n
文字を超える文字列を格納しようとすると、PostgreSQLはエラーを発行します。
ただし、例外として、過剰な文字がすべて空白である場合、PostgreSQLは空白を最大長(n
)に切り詰めて格納します。
文字列が明示的にCHAR(n)
またはVARCHAR(n)
にキャストされた場合、PostgreSQLはテーブルに挿入する前に文字列をn
文字に切り捨てます。
TEXT
データ型は無制限に長い文字列を格納できます。データ型に対してn整数を指定しない場合、TEXT
データ型のような動作をします。 VARCHAR
(サイズ n
なし) と TEXT
の性能は同じです。
VARCHAR
データ型に長さ指定子を指定する唯一の利点は、n
文字以上の文字列を VARCHAR(n)
列に挿入しようとすると PostgreSQL がエラーを出すことです。
VARCHAR
とは異なり、長さ指定子なしのCHARACTER
またはCHAR
はCHARACTER(1)
またはCHAR(1)
と同じです。
他のデータベースシステムとは異なり、PostgreSQLでは、3種類の文字型で性能に差はありません。
PostgreSQLの文字型の例
例を見て、CHAR
、VARCHAR
、TEXT
データ型がどのように機能するかを見てみましょう。
まず、character_testsという新しいテーブルを作成します。
Code language: SQL (Structured Query Language) (sql)
次に、character_tests
テーブルに新しい行を挿入します。
Code language: SQL (Structured Query Language) (sql)
PostgreSQLはエラーを発行しました。
Code language: SQL (Structured Query Language) (sql)
これはx
列のデータ型がchar(1)
なので、3文字のストリングをこの列に対して挿入しようとしたためです。 修正しましょう。
Code language: SQL (Structured Query Language) (sql)
PostgreSQL は別のエラーを発行します:
Code language: Shell Session (shell)
これは、varchar(10)
データ型を持つ y
列に 10 文字を超える文字列を挿入しようとしたためです。
次のステートメントは、character_tests
テーブルに新しい行を正常に挿入します。
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)
概要
- PostgreSQL は
CHAR
、VARCHAR
、およびTEXT
データ型をサポートします。CHAR
は固定長の文字型で、VARCHAR
とTEXT
は可変長の文字型です。 - 列に挿入または更新する前に文字列 (
n
) の長さを検証したい場合は、VARCHAR(n)
を使用してください。 -
VARCHAR
(長さ指定子なし) とTEXT
は同等です。
- Was this tutorial helpful?
- YesNo