Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggunakan Operator JSONB PostgreSQL (`?`, `?|`, `?&`, `/`) dengan Penyata Disediakan JDBC?

Bagaimana untuk Menggunakan Operator JSONB PostgreSQL (`?`, `?|`, `?&`, `/`) dengan Penyata Disediakan JDBC?

Susan Sarandon
Susan Sarandonasal
2024-12-24 03:18:15862semak imbas

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

Menggunakan Operator PostgreSQL JSON(B) dengan Tanda Soalan ("?") dalam JDBC

PostgreSQL menawarkan pelbagai operator, termasuk ?/?|/ dan ?&, yang memudahkan pengendalian JSON. Walau bagaimanapun, pemacu PostgreSQL JDBC menghadapi kesukaran menghuraikan rentetan SQL yang mengandungi pengendali ini. Artikel ini meneroka dua penyelesaian untuk menggunakan operator ini dalam JDBC.

Penyelesaian 1: Pernyataan Statik

Satu pendekatan ialah menggunakan pernyataan statik dan bukannya pernyataan yang disediakan. Walaupun kaedah ini menghapuskan faedah pernyataan yang disediakan, ia mengendalikan pengendali dengan berkesan.

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

Penyelesaian 2: Penggantian Fungsi

Pengendali hanyalah binaan sintaksis yang sepadan dengan fungsi dalam pg_catalog. Dengan mengenal pasti fungsi ini, anda boleh memanggilnya secara langsung tanpa menggunakan pengendali. Kaedah ini mungkin memberi kesan kepada kecekapan pengindeksan.

Untuk mencari fungsi yang sepadan, laksanakan pertanyaan SQL berikut:

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

Fungsi yang terhasil, "jsonb_exists_any(jsonb, text[])", boleh digunakan dalam pernyataan yang disediakan:

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

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Operator JSONB PostgreSQL (`?`, `?|`, `?&`, `/`) dengan Penyata Disediakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn