Postgres中的数组数组

时间:2018-06-15 11:26:20

标签: postgresql

在Postgres数据库中,我有一个字段def ff = session.get() if(!ff) return def text = session.read(ff).withStream{ it.getText("UTF-8") } //do here something with text... session.transfer(ff, REL_SUCCESS) 定义如下:

field

我存储的值如下:

CREATE TABLE t (
    id SERIAL PRIMARY KEY,
    field character varying(255)[] DEFAULT ARRAY[]::character varying[],
);

1 - 如何选择较低/较高的值?我喜欢这样的查询回复:

ID   FIELD   
1    {{lower,0},{greater,10}}
2    {{something_else,7},{lower,5}}

2 - 如何按较低/较高值过滤?

谢谢!

1 个答案:

答案 0 :(得分:1)

这样做很尴尬,但这可以实现它。我使用的是PG 9.3,所以我不知道在以后的版本中是否有更好的方法可以做到这一点。

SELECT id, (SELECT field[ss][2] FROM generate_subscripts(field, 1) ss WHERE field[ss][1] = 'lower') AS lower
FROM t;

基本上,对于每条记录,生成用作主数组索引的下标以访问子数组。对于每个,请查找第一个项目为' lower'的数组。如果找到,则返回第二个项目的值。