Heim > Datenbank > MySQL-Tutorial > Wie frage ich nach Übereinstimmungen mit JSON-Array-Elementen in PostgreSQL?

Wie frage ich nach Übereinstimmungen mit JSON-Array-Elementen in PostgreSQL?

Patricia Arquette
Freigeben: 2025-01-15 10:49:43
Original
208 Leute haben es durchsucht

How to Query for JSON Array Element Matches in PostgreSQL?

JSON-Array-Elementübereinstimmung in PostgreSQL abfragen

Der JSON-Datentyp von PostgreSQL kann beim Abfragen bestimmter Elemente in verschachtelten Arrays schwierig sein. Betrachten Sie das folgende Beispiel:

<code>{
  "objects": [{"src":"foo.png"},
{"src":"bar.png"}],
  "background":"background.png"
}</code>
Nach dem Login kopieren

Um die Datensätze abzufragen, deren „src“-Wert mit „foo.png“ im „objects“-Array übereinstimmt, können Sie einen lateralen Join in der FROM-Klausel verwenden.

PostgreSQL 9.3 und höher

Verwenden Sie für PostgreSQL 9.3 und höher die Funktion json_array_elements(), um das Array „objects“ zu erweitern und jedes Element zu testen:

<code class="language-sql">SELECT data::text, obj
FROM   reports r, json_array_elements(r.data#>'{objects}') obj
WHERE  obj->>'src' = 'foo.png';</code>
Nach dem Login kopieren

PostgreSQL 9.4 und höher

In PostgreSQL 9.4 und höher sollten Sie die Funktion jsonb_array_elements() verwenden und einen passenden GIN-Index für den Ausdruck erstellen:

<code class="language-sql">CREATE INDEX reports_data_gin_idx ON reports
USING gin ((data->'objects') jsonb_path_ops);

SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
Nach dem Login kopieren

Denken Sie daran, dass beim Array-Matching die Elemente in eckige Klammern eingeschlossen werden müssen, während beim normalen Objekt-Matching keine Klammern erforderlich sind. Weitere Details und Problemumgehungen finden Sie in der verlinkten Dokumentation und anderen in der Frage bereitgestellten Ressourcen.

Das obige ist der detaillierte Inhalt vonWie frage ich nach Übereinstimmungen mit JSON-Array-Elementen in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage