Notice
Recent Posts
Recent Comments
Link
혜야의 코딩스토리
[Mybatis] 동적쿼리 (if test) 문자열 처리 본문
java단에서 map_yn을 String 타입의 "Y"로 넘겼을 때,
//java
String map_yn = "Y";
requestMap.put("map_yn", map_yn);
둘 중 어떻게 비교하는 것이 옳을 까요?
<!-- 첫 번째 방법 -->
<if test='map_yn eq "Y"'></if>
<!-- 두 번째 방법 -->
<if test="map_yn eq 'Y'"></if>
<!-- 첫 번째 방법 -->
<if test='map_yn eq "Y"'></if>
<!-- 실제 동작 -->
<if test='"Y" eq "Y"'></if>
정답은 첫 번째 방법입니다!
String과 String이 비교되므로 정상적으로 실행됩니다.
<!-- 두 번째 방법 -->
<if test="map_yn eq 'Y'"></if>
<!-- 실제 동작 -->
<if test=""Y" eq 83"></if>
반면에, 두 번째 방법은
싱글쿼테이션이 붙은 'Y'를 83으로 인식하여 비교하므로, 정상적으로 실행되지 않습니다.
싱글쿼테이션(' ')의 경우, 먼저 문자가 한 글자인지, 두 글자 이상인지를 체크합니다.
만약, 문자가 두 글자 이상 (ex. 'YES') 이라면, 내부적으로 typeHandler에 따라 String형태로 변환되어 값을 비교합니다.
'Y'는 문자가 한글자이므로, 해당 값을 아스키코드 값으로 인식하여
아스키코드 S에 해당하는 십진수 값 83으로 인식합니다.
아래 아스키 코드표를 참고바랍니다.
아스키 코드표(ASCII Table)
'꿈 : 멋진 개발자 🧸 > DB' 카테고리의 다른 글
[Mybatis] 동적쿼리 (if test) 문자열 비교 (0) | 2023.11.10 |
---|---|
[PostgreSQL] postgres_fdw 확장 / 외부 테이블 사용 (0) | 2023.10.31 |