2 Stimmen

Postgres, enthält der Operator für mehrdimensionale Arrays eine Flatten-Funktion, bevor er vergleicht?

Die folgende Abfrage:

SELECT ARRAY[[1,2,3], [4,5,6], [7,8,9]] @> ARRAY[2, 3, 5];

wird mit true und nicht mit false wie erwartet beantwortet, da das array[2, 3, 5] nicht im Ausgangsarray vorhanden ist. Irgendwelche Ideen, wie das passieren kann? Vielleicht wird Flatten auf mehrdimensionale Arrays angewendet?

1voto

Roman Pekar Punkte 98979

Es ist nicht die Antwort warum, aber ich habe versucht, einen Weg zu finden, um zu tun, was du brauchst, das Beste, was ich bisher habe ist:

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

einige nützliche Links über Arrays in PostgreSQL:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X