评估数组是否包含给定元素以外的其他元素

时间:2019-12-13 21:16:46

标签: arrays postgresql plpgsql

我正在尝试确定给定的数组 IIF(_servicetype@>ARRAY['12']::INT[] OR _servicetype@>ARRAY['1'] ::INT[] OR _servicetype@>ARRAY['2'] ::INT[] OR _servicetype@>ARRAY['3'] ::INT[],TRUE,FALSE)::BOOLEAN 是否包含12,1,2,3以外的元素。 以下是我到目前为止的内容,


方案1:如果我的数组是{1,2,3,6015},我想为假

方案2:如果我的数组是{1,2,12},我想为真

方案3:如果我的数组为{1,2},我想为真


我最终在Postgres中将iif语句创建为用户定义的函数,并得到以下内容:

first

我担心的是,它不适用于方案1。

1 个答案:

答案 0 :(得分:3)

您可以使用ARRAY[12, 1, 2, 3](包含/覆盖)运算符检查_servicetype@>的超集,即_supertype是否包含{{1}中的任何内容}返回ARRAY[12, 1, 2, 3]

false