3

たとえば、私はタイプを持っています:

CREATE TYPE record AS ( name text, description text, tags text[])

そしてテーブル:

CREATE TABLE items ( id serial, records record[] )

PL/pgSQLを使用せずに、タグ「test」を持つレコードを持つすべてのアイテムを選択するにはどうすればよいですか?

4

1 に答える 1

3

なぜ誰もが配列や hstore などで足を撃ちたいのですか? データを標準 SQL テーブルに正規化します。また、プログラミング時には、配列や hstores などの高度な機能を使用してください。しかし、ここに弾丸が...

Postgres は、予約語を型として使用することを好みません。

CREATE TYPE rec AS (name text, description text, tags text[]);
CREATE TABLE items (id int, wreck rec);
INSERT INTO items(1, row('foo','foo description', '{test,testing,tested}')::rec);

SELECT * 
FROM items
WHERE 'test' = ANY ((wreck).tags)

そして、別の配列の複合体で配列内のテキストを検索する...まあ、それはただ頭がおかしくなるだけです。そして、あなたがそれを理解したとしても、あなたの後にあなたのコードを維持しようとした人は頭を悩ませたままになるでしょう。

于 2010-04-01T17:52:42.047 に答える