FRAMEWORK/Spring

[SpringBoot, PostgreSQL] myBatis ?(물음표) 문자 사용하기

반응형

myBatis에서 ?(물음표) 문자 사용하기

myBatis를 사용하는 프로젝트를 진행하다보면, 물음표를 문자로써 사용해야 하는데, 해당 부분에 parameter로 들고온 값이 들어가는 경우가 있습니다. 

 

이럴 경우, CHR(63)'?' 대신 써주면 됩니다.

'&' 역시 마찬가지로 문자로 사용하고 싶다면 CHR(38)을 대신 써주면 문자로 사용이 가능합니다.

 

사용 예시

만약, '?'를 그냥 쿼리문에 넣게되면 하기와 같은 결과를 도출하게 됩니다.

// 만약, 아래와 같이 사용하게 되면, parameterType으로 지정한 값들이 들어갈 수 있습니다
// 필자의 경우는, '?'로 사용해도 쿼리는 제대로 돌아갔지만, jdbc.sqlonly에 의해 출력된 쿼리문에는 '?' 위치에 paramter로 지정한 값이 들어가있었습니다.
SELECT SPLIT_PART(BEFORE, '?', 1) AFTER
FROM TABLE_NAME

// '?'로 직접 넣었을 때의 sql 출력문(필자의 parameter는 string타입의 시간데이터여서 '?'위치에 해당 데이터 들어감
SELECT SPLIT_PART(BEFORE, '2021-02-02 00:00:00', 1) AFTER
FROM TABLE_NAME

반면, CHR(63)으로 '?' 자리에 대신 작성하게 되면 하기와 같이 잘못된 parameter가 들어가지 않고 제대로 쿼리가 작동합니다.

// '?'를 문자로 사용하기
SELECT SPLIT_PART(BEFORE, CHR(63), 1) AFTER
FROM TABLE_NAME

// CHR(63)으로 '?'을 대신 했을때의 sql 출력문
SELECT SPLIT_PART(BEFORE, CHR(63), 1) AFTER
FROM TABLE_NAME

 

반응형