如何在PostgreSQL中检查数组的子集中的值?

uhry853o  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(129)

我想在WHERE子句中放置一个条件,如果文本字段包含在语句中声明的数组的子集中,则返回true。这是使用postgres v15.1。我把这个语句简化为下面的例子:

SELECT 'case_1'::TEXT IN((ARRAY['case_1','case_2','case_3']) [1:2]);

这应该声明一个包含case_1,2,3的数组,获取包含case_1,2的数组的子集,然后测试case_1是否在数组中。预期结果为真。
实际行为是错误的:“运算符不存在text=text[]"。
我理解IN()操作符是一个测试,如果左手参数在右边的参数中,它有一个维度。
如果case_1在数组的子集中,我如何纠正语法返回true或false?

vwoqyblh

vwoqyblh1#

就像错误说的,你把你的类型搞砸了。
IN关键字需要括号中的显式项列表。您已经为它提供了一个项-一个数组。
你想要ANY(...)

SELECT 'case_1' = ANY((ARRAY['case_1', 'case_2', 'case_3'])[1:2]);

相关问题