2010-04-01 39 views
2

例如數組情況選擇我有型:與複合類型(PostgreSQL系統)

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

而且表:

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

如何選擇與標籤「測試」記錄的所有項目(不使用PL/pgSQL)?

回答

1

爲什麼每個人都想用自己的陣列,hstores等自己拍攝自己?將數據標準化爲標準的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) 

然後搜索數組中的文本,在另一個數組中的複合文件中...以及只是讓腦海中的想法變得難以理解。即使你弄明白了,任何在你維護你的代碼之後來到的人都會被困在腦後。

+0

我期待這樣的評論。謝謝,我會小心的 – valodzka 2010-04-03 12:51:55