【发布时间】:2022-01-07 21:53:24
【问题描述】:
提前致谢。假设,我有一个表,其中包含类似这样的数组中的值。
CREATE TABLE example (
id serial4 NOT NULL,
name varchar(100) NOT NULL,
content_type json NULL
CONSTRAINT example_pkey PRIMARY KEY (id)
);
id |name |content_type
-----------------------
1 | P | ['a','b','c']
2 | Q | ['a',]
3 | R | ['b','c']
4 | S | ['a','c']
我想查找 content_type 中哪一行包含'c'
我试过了,但没有得到,
select * from table where ARRAY['c'] && content_type;
有人帮我构建查询吗?
【问题讨论】:
-
你可以找到数组中所有值都等于 c 的行:SELECT * FROM table WHERE value = ALL (column);
-
不清楚。
content_type是 char 数组还是 JSON? Edit 问题并添加表的CREATE声明以澄清。还有为什么这不是以关系方式建模的?这可以通过链接内容类型的另一个表轻松完成。那么这将是一个简单的连接查询...... -
@stickybit,谢谢你的建议。我本可以对关系方式进行建模,但由于某些原因,我必须遵循这一点。
content_type是一个 JSON 列。 -
@RakibulIslam 你真的需要 JSON 列吗?它还可以保存对象或原始值而不是数组吗?数组可以包含字符以外的任何内容吗?如果没有,您应该将列类型更改为
char[]或text[],使其成为实际的数组列(并让Pooya 的答案起作用) -
再次感谢您。我会尝试在这里提供反馈。
标签: json postgresql postgresql-json