Heim > Datenbank > MySQL-Tutorial > Wie verwende ich PostgreSQL-JSONB-Operatoren (`?`, `?|`, `?&`, `/`) mit vorbereiteten JDBC-Anweisungen?

Wie verwende ich PostgreSQL-JSONB-Operatoren (`?`, `?|`, `?&`, `/`) mit vorbereiteten JDBC-Anweisungen?

Susan Sarandon
Freigeben: 2024-12-24 03:18:15
Original
858 Leute haben es durchsucht

How to Use PostgreSQL JSONB Operators (`?`, `?|`, `?&`, `/`) with JDBC Prepared Statements?

Verwendung von PostgreSQL-JSON(B)-Operatoren mit Fragezeichen („?“) in JDBC

PostgreSQL bietet verschiedene Operatoren, darunter ?/?|/ und ?&, die die JSON-Verarbeitung erleichtern. Allerdings stößt der PostgreSQL-JDBC-Treiber auf Schwierigkeiten beim Parsen von SQL-Zeichenfolgen, die diese Operatoren enthalten. In diesem Artikel werden zwei Problemumgehungen für die Verwendung dieser Operatoren in JDBC untersucht.

Lösung 1: Statische Anweisungen

Ein Ansatz besteht darin, statische Anweisungen anstelle vorbereiteter Anweisungen zu verwenden. Während diese Methode die Vorteile vorbereiteter Anweisungen eliminiert, verarbeitet sie Operatoren effektiv.

try (Statement s = c.createStatement();
     ResultSet rs = s.executeQuery("select '{}'::jsonb ?| array['a', 'b']")) {
     ...
}
Nach dem Login kopieren

Lösung 2: Funktionssubstitution

Operatoren sind bloße syntaktische Konstrukte, die Funktionen im pg_catalog entsprechen. Durch die Identifizierung dieser Funktionen können Sie sie direkt aufrufen, ohne Operatoren zu verwenden. Diese Methode kann Auswirkungen auf die Indizierungseffizienz haben.

Um die entsprechende Funktion zu finden, führen Sie die folgende SQL-Abfrage aus:

SELECT 
  oprname, 
  oprcode || '(' || format_type(oprleft,  NULL::integer) || ', ' 
                 || format_type(oprright, NULL::integer) || ')' AS function
FROM pg_operator 
WHERE oprname = '?|';
Nach dem Login kopieren

Die resultierende Funktion „jsonb_exists_any(jsonb, text[])“ kann in vorbereiteten Aussagen verwendet werden:

try (PreparedStatement s = c.prepareStatement(
         "select jsonb_exists_any('{}'::jsonb, array['a', 'b']");
     ResultSet rs = s.executeQuery()) {
     ...
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verwende ich PostgreSQL-JSONB-Operatoren (`?`, `?|`, `?&`, `/`) mit vorbereiteten JDBC-Anweisungen?. 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