text
データ型とcharacter varying
( varchar
) データ型の違いは何ですか?
によるとドキュメント
長さ指定子なしで文字可変を使用する場合、型は任意のサイズの文字列を受け入れます。後者は PostgreSQL の拡張機能です。
そして
さらに、PostgreSQL は任意の長さの文字列を格納する text 型を提供します。text 型は SQL 標準には含まれていませんが、他のいくつかの SQL データベース管理システムにも含まれています。
それで、違いは何でしょうか?
ベストアンサー1
違いはありません。中身はすべて同じですvarlena
(可変長配列)。
Depesz のこの記事をご覧ください:http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/
いくつかのハイライト:
すべてを要約すると:
- char(n) – より短い値を扱うときにスペースを取りすぎる
n
( にパディングするn
)ため、末尾にスペースを追加することで微妙なエラーが発生する可能性があり、制限を変更するのも問題です。- varchar(n) – ライブ環境で制限を変更するのは問題があります (テーブルを変更するときに排他ロックが必要)
- varchar – テキストと同様
- 私にとっては、テキストは(n)データ型よりも勝者です。なぜなら、テキストには問題がなく、varcharよりも勝者です。なぜなら、テキストには明確な名前があるからです。
この記事では、4 つのデータ型すべてについて、挿入と選択のパフォーマンスが類似していることを示す詳細なテストを行っています。また、必要に応じて長さを制限する別の方法についても詳しく取り上げています。関数ベースの制約またはドメインには、長さの制約を即座に増やすという利点があり、文字列の長さの制約を減らすことはまれであることから、depesz は、通常、長さの制限にはこれらのうちの 1 つが最適な選択であると結論付けています。