postgres,contains-operator for multidimensional array在比较之前执行flatten?

时间:2013-08-21 13:44:28

标签: arrays postgresql multidimensional-array contains

以下查询:

SELECT ARRAY[[1,2,3], [4,5,6], [7,8,9]] @> ARRAY[2, 3, 5];
由于源数组中不存在array[2, 3, 5],因此

会按预期响应,而不会返回false。任何想法怎么会发生?也许flatten应用于多维数组?

1 个答案:

答案 0 :(得分:1)

这不是为什么回答,但我试图找到一种方法来做你需要的,最好的我到目前为止是:

with cte_arr as (
   select ARRAY[[1,2,3], [4,5,6], [7,8,9], [10,11, 12], [2,5,3]] as arr
), cte_s as (
   select generate_subscripts(arr,1) as subscript, arr
   from cte_arr
)
select arr[subscript:subscript] @> ARRAY[2, 3, 5], arr[subscript:subscript]
from cte_s

sql fiddle demo

关于PostgreSQL中数组的一些有用链接: