postgresql - select all rows where array elements exist
问题描述
I have a table:
CREATE TABLE test_array
(
id integer,
arr TEXT[]
);
I insert sample data:
INSERT INTO test_array(id, arr) VALUES (1, '{"a", "b", "c"}');
INSERT INTO test_array(id, arr) VALUES (2, '{"d", "f", "c"}');
INSERT INTO test_array(id, arr) VALUES (3, '{"a", "z", "i"}');
I want to get rows where elements {"a", "c"} is exist, so the result must be:
'{"a", "b", "c"}'
'{"d", "f", "c"}'
'{"a", "z", "i"}'
I write query:
select * from test_array where arr @> '{"a"}' or arr @> '{"c"}';
but I want to make query without or
, in one condition. Is it possible?
When I run select * from test_array where arr @> '{"a", "c"}';
it returns me only one row
解决方案
表示“包含”,因此右侧数组中的@>
所有元素都必须存在于左侧数组中。您正在寻找被描述为“具有共同元素”的重叠&&
运算符:
select *
from test_array
where arr && array['a', 'c'];
我更喜欢array[]
指定数组常量的表示法,因为我不需要考虑嵌套引号。
推荐阅读
- wordpress - 如何允许 Netlify 持续集成通过 Wordfence 防火墙?
- tensorflow - 在 Anaconda3 中运行 TensorFlow
- kivy - KivyMD > MDRaisedButton > 调整字体大小以适应 MDRaisedButton
- python - 为什么这会返回从低到高的数字总和?
- c# - 当 SelectedItem 绑定到模型源并且 ItemsSource 绑定到模型选项时,SelectedIndex 不起作用
- tailwind-css - 为什么顺风css没有效果?
- swiftui - 是否可以使用 SwiftUI 中的 NavigationView 替换 iPad 导航栏中的默认后退按钮和侧边栏图标?
- python - 打开 cv 不会视频捕获 IP 摄像机
- javascript - 对对象使用 getter/setter 有什么意义吗?
- node.js - 在移动下一步之前等待 api 响应 - nodejs