PostgreSQL 配列: 関数、型、例
⚡ スマートサマリー
PostgreSQL Arrayを使用すると、テーブル列を任意の有効なデータ型の配列として定義できます。配列列の作成、ARRAYコンストラクタまたは波括弧を使用した値の挿入、要素のクエリと変更、ANY()を使用した検索などが可能です。

何ですか PostgreSQL 配列?
In PostgreSQL列は有効なデータ型の配列として定義できます。データ型は、組み込み型、ユーザー定義型、または列挙型にすることができます。これ以外にも、配列は重要な役割を果たします。 PostgreSQL.
対応するすべての PostgreSQL データ型には、それぞれ対応する配列型が存在します。例えば、整数型にはinteger[]配列型、文字型にはcharacter[]配列型といった具合です。
作成 PostgreSQL 配列
次の例では、連絡先列がテキスト配列として定義された Employees という名前のテーブルを作成します。
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
コマンドは正常に実行されるはずです。
挿入する PostgreSQL 配列値
今すぐしましょう insert 値を上の表に代入します。
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
挿入は正常に実行されるはずです。
3列目、つまり連絡先の値は配列として挿入されています。これは、ARRAYコンストラクタを使用することで実現されています。この例では、角括弧[]で囲んでいます。従業員Alice Johnには2つの連絡先があります。
以下に示すように、中括弧 {} を使用することも可能です。
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
コマンドは正常に実行されるはずです。
上記のステートメントは、Employees テーブルに 2 つの行を挿入します。中括弧を使用する場合、配列は一重引用符 (') で囲まれ、テキスト配列項目は二重引用符 (“) で囲まれます。
配列データのクエリ
配列の要素をクエリするには、SELECT文を使用します。Employeesテーブルの内容を確認するには、次のコマンドを実行します。
SELECT * FROM Employees;
これにより、次が返されます。
配列列(contact)の要素は、中括弧 {} で囲まれています。配列要素自体にアクセスするには、角括弧 [] の中に添え字を追加します。配列の最初の要素は位置 1 にあります。
例えば、従業員の名前と、複数の連絡先を持つ従業員については最初の連絡先のみを取得する必要があります。これは contact[1] としてアクセスできます。これを見てみましょう。
SELECT name, contact[1] FROM Employees;
次のように返されます。
SELECT文とWHERE句を組み合わせて使用することで、配列列に基づいて行をフィルタリングできます。たとえば、2番目の連絡先が(408)-567-78234である従業員を表示するには、次のコマンドを実行します。
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
次のように返されます。
変更 PostgreSQL 配列
配列の要素全体または単一の要素を更新できます。以下は、Employees テーブルの内容です。
従業員 James Bush の 3 番目の電話番号 (ID は XNUMX) を更新してみましょう。
次のコマンドを実行します。
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
コマンドは正常に実行されるはずです。
テーブルにクエリを実行して、変更が成功したかどうかを確認してみましょう。
変更は成功しました。
検索 PostgreSQL 配列
現在、従業員テーブルは次のとおりです。
連絡先配列内の位置に関係なく、連絡先 (408)-783-5731 の所有者を知りたいとします。以下に示すように、ANY() 関数を使用できます。
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
次のように返されます。
配列の展開
配列の値を行に分割することができます。このプロセスは配列の拡張と呼ばれます。従業員テーブルの例では、連絡先配列に2つの連絡先を持つ従業員がいます。これらを別々の行に分割することができます。 PostgreSQL この目的に使用できる unnest() 関数を提供します。例:
SELECT name, unnest(contact) FROM Employees;
次のように返されます。
従業員のAlice JohnとJames Bushはそれぞれ2件の連絡先を持っています。これらを別々の行に分けることができます。
pgAdminの使用
作成 PostgreSQL 配列
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- デモボタンをクリックしてください。
ステップ3) クエリ エディターにクエリを入力して、Employees テーブルを作成します。
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
ステップ4) 「実行」ボタンをクリックします。
挿入する PostgreSQL 配列値
ステップ1) クエリ エディターに次のクエリを入力します。
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
ステップ2) 「実行」ボタンをクリックします。
ステップ3) クエリで波括弧を使用するには、クエリ エディタに次のクエリを入力します。
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
次に、「実行」ボタンをクリックします。
配列データのクエリ
ステップ1) Employees テーブルの内容を表示するには、クエリ エディタに次のクエリを入力します。
SELECT * FROM Employees;
ステップ2) 「実行」ボタンをクリックします。
次のような結果が返されます。
ステップ3) 従業員の最初の連絡先を確認するには、クエリ エディタに次のクエリを入力し、「実行」ボタンをクリックします。
SELECT name, contact[1] FROM Employees;
次のような結果が返されます。
ステップ4) SELECT文とWHERE句を組み合わせるには、クエリ エディターに次のコマンドを入力し、[実行]ボタンをクリックします。
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
次のような結果が返されます。
変更 PostgreSQL 配列
ステップ1) IDが3のユーザーの2番目の連絡先を更新するには、次のコマンドを実行します。
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
ステップ2) 「実行」ボタンをクリックします。
ステップ3) 変更が成功したかどうかを確認するには、クエリ エディターに次のコマンドを入力し、[実行] ボタンをクリックしてください。
SELECT * FROM Employees;
次のような結果が返されます。
検索 PostgreSQL 配列
ステップ1) クエリ エディターに次のクエリを入力します。
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
ステップ2) 「実行」ボタンをクリックします。
次のような結果が返されます。
配列の展開
ステップ1) クエリ エディターに次のクエリを入力します。
SELECT name, unnest(contact) FROM Employees;
ステップ2) 「実行」ボタンをクリックします。
次のような結果が返されます。






























