ホームページ >データベース >mysql チュートリアル >JDBC を使用して疑問符が付いた PostgreSQL JSON(B) 演算子を処理する方法
PostgreSQL は、JSON 操作に疑問符「"?」文字を含む ASCII アート演算子を利用します。ただし、公式の PostgreSQL JDBC ドライバーはこれらの疑問符を通常の JDBC バインド変数として解釈するため、使用時にエラーが発生します。
JDBC 経由でこれらの演算子を使用するには、次の 2 つの回避策が適用できます。
静的ステートメント:
静的を使用するこのアプローチでは、プリペアド ステートメントの使用が簡素化されますが、パフォーマンスの向上や SQL インジェクションなど、プリペアド ステートメントの利点が失われます。保護。
try (Statement s = c.createStatement(); ResultSet rs = s.executeQuery("select '{}'::jsonb ?| array['a', 'b']")) { ... }
関数ベースのアプローチ:
pg_catalog で使用可能な基礎となる関数を使用して演算子を回避し、特定の演算子に関連付けられた関数名を識別します。 、次の SQL クエリを実行します:
SELECT oprname, oprcode || '(' || format_type(oprleft, NULL::integer) || ', ' || format_type(oprright, NULL::integer) || ')' AS function FROM pg_operator WHERE oprname = '?|';
「?|"」演算子の場合、これは結果:
oprname function ---------------------------------------------------------------------------------- ?| jsonb_exists_any(jsonb, text[])
演算子を JDBC ステートメント内の対応する関数に置き換えます:
try (PreparedStatement s = c.prepareStatement( "select jsonb_exists_any('{}'::jsonb, array['a', 'b']"); ResultSet rs = s.executeQuery()) { ... }
以上がJDBC を使用して疑問符が付いた PostgreSQL JSON(B) 演算子を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。