2010-04-01 44 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