티스토리 뷰

Developer

like문 작성법

rocksea 2012. 10. 10. 15:15


LIKE 구문 사용 시 '%' 기호를 사용할 경우 PrepareStatement 타입으로 변환되면서 오류가 발생한다.


아래와같을 경우 더블쿼테이션까지 포함되어 치환되기 때문에 SQLException이 발생한다.


iBatis

WHERE name LIKE "#str#%"


MyBatis

 - WHERE name LIKE "%#{str}%"


이를 해결하는 방법은 #기호 대신 $ 기호를 사용하면 되는데 $ 기호의 경우 변수명이 그대로 노출되기 때문에

SQL 인젝션 공격을 당할 위험이 있다.


그래서 다른 방법은 RDBMS에서 지원하는 문자열 함수를 이용하여 #{str}% 형태로 조합하는 것이다.

Oracle :  WHERE name LIKE ‘%’ || #{str} || ‘%’

MySQL :   WHERE name LIKE CONCAT(‘%’, #{str}, ‘%’)


.by rocksea

'Developer' 카테고리의 다른 글

apt-get package 설치에러  (0) 2012.10.12
[ Thrift ] thrift installation & example  (0) 2012.10.11
[ expect ] telnet, ssh 자동화 script  (0) 2012.10.09
[ console ] commands  (0) 2012.10.08
maven + spring framework 연동하기  (0) 2012.10.04
댓글