检查一个值是否存在于数组中非常简单。例如,以下代码将返回true。
SELECT 'hello' = ANY(ARRAY['hello', 'bees'])
如果我想检查数组中是否存在多个值,该怎么办呢?例如,如果我想要在数组中返回true,当'hello'或'bye'存在于数组中时。我想要做的事情类似于:
SELECT ['hello', 'bye'] = ANY(ARRAY['hello', 'bees'])
但是似乎不起作用。
编辑:
我还想弄清楚如何检查数组中是否存在多个具有共同前缀的值。
例如,如果我想返回true,如果数组包含任何具有“hello”前缀的元素。因此,我基本上想要像这样的东西
SELECT ARRAY['hello%'] && ARRAY['helloOTHERSTUFF']
确切地说,
ARRAY['hello', 'bye'] && ARRAY['hello', 'bees']
- AbelistoARRAY ['hello'] && ARRAY ['helloOTHERSTUFF']
这样的东西是真实的。我还将编辑原始帖子。 - Vincentfield_name ILIKE 'hello%'
的东西,但是针对数组。这不可能吗? - Vincentany
但使用like
而不是=
),则可以实现,但反之则不行。对于两个(或多个)数组的复杂比较的一般模式是exists 1 from unnest(<array1>) as t1(x1) join unnest(<array2>) as t2(x2) on (<join condition>)
,其中<join condition>
对于您的示例可能是x1 ilike x2
。 - Abelisto