PostgreSQL の Varchar とテキスト

Bilal Shahid 2024年2月15日
  1. PostgreSQL の TEXT データ型
  2. PostgreSQL の VARCHAR データ型
  3. PostgreSQL の VARCHARTEXT の比較
PostgreSQL の Varchar とテキスト

PostgreSQL には、整数、日付、文字列などのさまざまな種類のデータを格納するための複数のデータ型があります。ただし、PostgreSQL では、string データ型には、CHARVARCHAR、および TEXT の 3つの主要な型があります。

この記事では、VARCHARTEXT について詳しく説明し、それらの違いを比較します。

PostgreSQL の TEXT データ型

データ型には、格納できる text の量に制限はありません。 したがって、このデータ型のフィールドに任意の種類の テキスト を挿入でき、エラーは表示されません。

単純なキーワード TEXT は、このデータ型のフィールドを宣言するために、キーワードの前に変数名と共に使用されます。 以下に、いくつかの例を使用して詳しく説明します。

CREATE TABLE text_example (
    id int PRIMARY KEY,
    data TEXT NOT NULL
);

このテーブルには、データを格納する 2つのデータ型として INTTEXT があります。 それでは、いくつかのデータを挿入しましょう。

INSERT INTO text_example
VALUES
(1,' This text has no size limit because stored in TEXT datatype');

SELECT * FROM text_example;

次の出力は、変数に正常に格納されていることを示しています。これが、ほとんどの場合、TEXT データ型が使用される理由です。

varchar と postgresql のテキスト - 出力 1

PostgreSQL の VARCHAR データ型

このデータ型には 2つのバリアントがあります。 VARCHAR、文字可変 (n)、および VARCHAR(n) とも呼ばれます。 VARCHAR は基本的に、長さ指定子が定義されていない場合、別の名前を持つ TEXT データ型のように機能します。

制限が定義されていないため、無制限の text を保存できます。 前の例を使用して、TEXT データ型を VARCHAR に変更することで、簡単に実証できます。

CREATE TABLE varchar_example (
    id int PRIMARY KEY,
    data VARCHAR NOT NULL
);

このテーブルには、データを格納する 2つのデータ型として INTVARCHAR があります。 それでは、いくつかのデータを挿入しましょう。

INSERT INTO varchar_example
VALUES
(1,' This text has no size limit because stored in VARCHAR datatype');

SELECT * FROM varchar_example;

次の出力は、変数に正常に格納されたことを示しています。

varchar と postgresql のテキスト - 出力 2

ご覧のとおり、データは TEXT データ型と同様に正常に挿入されています。

さて、VARCHAR(n) に来て、データ型 VARCHAR(n) に挿入される文字数を制限できるようになったので、少し興味深いものになります。 VARCHAR(n) データ型に n 文字を超える文字を格納しようとすると、エラーが表示されます。

ただし、挿入された (制限を超えた) 文字がすべてスペースである場合、エラーは発生せず、それらのスペースは string で切り捨てられます。 次のように、コード例とその出力を使用して実証できます。

CREATE TABLE Nvarchar_example (
    id int PRIMARY KEY,
    data VARCHAR(15) NOT NULL
);

このテーブルには、データを格納する 2つのデータ型として、INTVARCHAR(n) があります。 それでは、いくつかのデータを挿入しましょう。

INSERT INTO Nvarchar_example VALUES (1, 'Size is fifteen');
SELECT * FROM Nvarchar_example;

次の出力は、変数に正常に格納されたことを示しています。

varchar と postgresql のテキスト - 出力 3

ご覧のとおり、この場合、指定された制限を超えていません。 したがって、string の保存に成功しました。 ただし、以下の例は、そうでない場合に何が起こるかを示しています。

CREATE TABLE Nvarchar_example2 (
    id int PRIMARY KEY,
    data VARCHAR(10) NOT NULL
);

それでは、いくつかのデータを挿入しましょう。

INSERT INTO Nvarchar_example2 VALUES (1, 'Size is fifteen');

ご覧のとおり、出力にはデータ型のサイズに関するエラーが表示されます。

varchar 対 postgresql のテキスト - 出力 4

VARCHAR を使用する重要な理由の 1つは、データ型の文字数を制限できることです。 string の挿入に制約を加える必要がある場合に便利です。

PostgreSQL は、長さ指定子の定義された制限を超える文字を追加できないようにエラーをスローします。

PostgreSQL の VARCHARTEXT の比較

上記の特徴を説明した後、これらのデータ型のいずれかを使用する場合と使用しない場合をより明確に判断できるようになると思います。 最後に、理解を深めるためにいくつかの一般的なシナリオについて説明します。

他のデータベースでは、これらのデータ型のいずれかを使用するとパフォーマンスにかなりの影響がありますが、PostgreSQL では、2つの型の間に顕著なパフォーマンスの違いはありません。

挿入前に長さ指定子の制限を検証するために、ストレージ容量が増加したり、追加の CPU サイクルが数回必要になる場合がありますが、それは無視できます。

2つのデータ型に関連する実際のパフォーマンス上の利点はないため、唯一の基本的かつ重要な点は、挿入される文字のサイズを制限するかどうかです。

VARCHAR(n) は検証を提供し、定義された制限を超えた場合、PostgreSQL はエラー メッセージを表示します。

それ以外では、通常の VARCHARTEXT よりも優先して使用することはお勧めしません。どちらも同等の機能を提供するためであり、TEXT には覚えやすく、文字列の長さに制限がない別の名前が付けられているためです。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub