집 >데이터 베이스 >MySQL 튜토리얼 >JDBC를 사용하여 물음표가 있는 PostgreSQL JSON(B) 연산자를 처리하는 방법은 무엇입니까?
PostgreSQL은 JSON 작업에 물음표 ""?" 문자가 포함된 ASCII 아트 연산자를 활용합니다. 그러나 공식 PostgreSQL JDBC 드라이버는 이러한 물음표를 일반 JDBC 바인드 변수로 해석하여 사용 시 오류가 발생합니다.
JDBC를 통해 이러한 연산자를 사용하려면 두 가지 해결 방법을 적용할 수 있습니다.
정적 문:
정적 사용 이 접근 방식은 사용을 단순화하지만 성능 향상 및 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!