die postgres doc sagt, dass ich ?&
können Sie überprüfen, ob ein JSONB Objektschlüssel enthält alle Elemente in einem Array. Gibt es etwas für mich zu überprüfen, ob alle Schlüssel in einem JSONB-Objekte von ein gegebenes Array enthalten sind?Postgres JSONB: überprüfen, ob alle Tasten * enthalten sind, durch * ein Array
damit eine Abfrage wie
select my_jsonb_column
from my_table
where my_jsonb_column *contained_by* array['a', 'b', 'c'];
würde Ergebnisse wie die folgenden ergeben, wo die Schlüssel eine Teilmenge sind des gegebenen Array.
{'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 3}
Hinweis zu arbeiten: 'Array (wählen jsonb_object_keys (my_jsonb_column))' und [Array-Funktionen und Operatoren] (https : //www.postgresql.org/docs/9.6/static/functions-array.html) – Abelisto
danke für die Antwort! also habe ich eine lösung basierend auf ihrem vorschlag gepostet und es funktioniert, aber ich verstehe nicht, warum es nötig ist, 'select' innerhalb der' array' funktion zu haben. anscheinend geht es ohne sie nicht. wäre toll, wenn Sie mich auf einige Ressourcen für eine Erklärung hinweisen können. Vielen Dank! – 732b
'array()' hier ist keine reguläre Funktion, sondern [Array Constructor] (https://www.postgresql.org/docs/current/static/sql-expressions.html#SQL-SYNTAX-ARRAY-CONSTRUCTORS). IMO Es ist nicht notwendig, zwei separate Formen des Konstruktors für die Unterabfrage und für [SRF] (https://www.postgresql.org/docs/current/static/functions-srf.html) Ergebnisse zu haben. – Abelisto