【发布时间】:2018-06-28 21:21:34
【问题描述】:
我在 PostgreSQL 9.6 数据库中有一个表:
CREATE TABLE new_table (
column_name varchar(255)[],
name varchar(40)
);
INSERT INTO new_table VALUES
('{one, two}' , 'first_user'),
('{other, two}', 'second_user'),
('{one, more}' , 'third_user');
我有一个数组数组(二维数组),并希望找到表中column_name 匹配任何包含的一维数组的所有行。我追求的是这样的:
select *
from new_table as s
where s.column_name = any('{{"one", "two"}, {"one", "more"}, {"two", "five"}}')
但这给了我错误:
ERROR: could not find array type for data type text[]
我想要的结果:
column_name | name
------------+--------------
{one,two} | first_user
{one,more} | third_user
有人知道吗?
【问题讨论】:
-
如果你想比较(即查询数据),这意味着你不应该首先使用数组。您应该创建一个一对多表来保存您想要为每个用户提供的不同值
-
为什么不公开你的 Postgres 版本?应该不言而喻...
-
@PanagiotisKanavos 你是什么意思我不应该在表格或数组数组中使用数组?目前我遍历数组并将数组与
'{"one", "two"}' = s.column_name进行比较,我只是好奇我可以通过一次调用而不是多次调用数据库来做到这一点。 -
@ErwinBrandstetter 哦忘了,现在已经编辑帖子了。
标签: sql arrays postgresql multidimensional-array