2011-10-28 6 views
5

PostgreSQLのフィールドに複数の値を格納することが可能かどうかを知りたい。PostgreSQLで利用できる多値フィールド型はありますか?

は、私が列idtextcategoryTokenと呼ばれるテーブルを持っています。 categoryは多値フィールドです。別のテーブルを作成する必要がありますか、それともテーブルのTokenに格納する方法がありますか?

答えて

9

PostgreSQLにはarraysがあります。たとえば:

CREATE TABLE "token" (
    "id"  integer PRIMARY KEY, 
    "text"  text, 
    "category" text[] 
); 

は今、あなたはtokenに各行に対して複数のカテゴリを挿入することができます。

SELECT * FROM "token" WHERE 'cate1' = ANY ("category"); 
+0

私は 'SELECT * FROMトークンカテゴリ=「cate1''ようなクエリ、クエリを実行した場合配列内を検索しますか? –

+0

@RenatoDinhaniConceiçãoいいえ、代わりに '@>'演算子または['ANY'](http://www.postgresql.org/docs/9.0/interactive/functions-comparisons.html#AEN16871)hyperoperatorを使用できます。 – minhee

7

がいくつかあります:

INSERT INTO "token" ("id", "text", "category") 
VALUES (1, 'some text', ARRAY['cate1', 'cate2']); 

はあなたが好きな行を見つけることができます

関連する問題