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 중국어 웹사이트의 기타 관련 기사를 참조하세요!