티스토리 뷰
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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- hadoop
- 조동사
- NGINX
- mongoDB
- maven
- k8s
- 베트남
- AWS
- Business English
- 스페인 여행
- 비지니스 영어
- Python Django
- nodejs
- memcached
- 영문법
- 여행
- redis
- 가정법
- 대명사 구문
- PostgreSQL
- 영작
- 비교구문
- it
- ubuntu
- 해외여행
- 다낭
- Python
- 도덕경
- hdfs
- JBOSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함