Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Operator PostgreSQL JSON(B) dengan Tanda Soalan Menggunakan JDBC?
PostgreSQL menggunakan operator seni ASCII yang mengandungi aksara tanda soal ""?" untuk operasi JSON. Walau bagaimanapun, pemandu rasmi PostgreSQL JDBC mentafsirkan tanda soal ini sebagai pembolehubah mengikat JDBC biasa, mengakibatkan ralat semasa menggunakannya.
Untuk menggunakan operator ini melalui JDBC, dua penyelesaian boleh digunakan:
Pernyataan Statik:
Gunakan pernyataan statik dan bukannya pernyataan yang disediakan Pendekatan ini memudahkan penggunaan tetapi menghapuskan kelebihan kenyataan yang disediakan, termasuk peningkatan prestasi dan perlindungan suntikan SQL.
try (Statement s = c.createStatement(); ResultSet rs = s.executeQuery("select '{}'::jsonb ?| array['a', 'b']")) { ... }
Pendekatan Berasaskan Fungsi:
Elakkan operator dengan menggunakan fungsi asas yang tersedia dalam pg_catalog . Untuk mengenal pasti nama fungsi yang dikaitkan dengan operator tertentu, laksanakan SQL berikut pertanyaan:
SELECT oprname, oprcode || '(' || format_type(oprleft, NULL::integer) || ', ' || format_type(oprright, NULL::integer) || ')' AS function FROM pg_operator WHERE oprname = '?|';
Untuk operator "?|"", ini menghasilkan:
oprname function ---------------------------------------------------------------------------------- ?| jsonb_exists_any(jsonb, text[])
Ganti operator dengan fungsi yang sepadan dalam pernyataan JDBC:
try (PreparedStatement s = c.prepareStatement( "select jsonb_exists_any('{}'::jsonb, array['a', 'b']"); ResultSet rs = s.executeQuery()) { ... }
Atas ialah kandungan terperinci Bagaimana Mengendalikan Operator PostgreSQL JSON(B) dengan Tanda Soalan Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!