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.
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']")) { ... }
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!