我有一个postres表,看起来是这样的:(缩写)

id (serial) | col1 (character varying[])
----------------------------------------
1           | {'Life', 'Health', "'VA Data'"}

我正在尝试执行以下操作:
SELECT * FROM mytable WHERE 'Life' = ANY (col1)

此查询的结果是零条记录。
目标是,我想要任何行,在col1数组中具有值“Life”的行。
我做错什么了?

最佳答案

Any应该行得通,但你给我看的是表的输出不是生命而是“生命”。参见下面的示例(1。正确插入的数据及其外观;2。错误插入的数据和它看起来像你的;3。所有数据):

testdb=# select * from test where 'Life' = ANY(col1);
 id |          col1
----+-------------------------
  1 | {Life,Health,"VA Data"}
(1 row)

testdb=# select * from test where '''Life''' = ANY(col1);
 id |           col1
----+---------------------------
  2 | {'Life',Health,"VA Data"}
(1 row)

testdb=# select * from test;
 id |           col1
----+---------------------------
  1 | {Life,Health,"VA Data"}
  2 | {'Life',Health,"VA Data"}

关于postgresql - Postgres SELECT其中数组中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34191848/

10-09 02:58