티스토리 뷰
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
- maven
- 비지니스 영어
- 가정법
- k8s
- hdfs
- Python Django
- memcached
- 비교구문
- 해외여행
- 영문법
- 대명사 구문
- mongoDB
- 조동사
- 영작
- it
- 다낭
- 여행
- PostgreSQL
- hadoop
- NGINX
- AWS
- Python
- nodejs
- 스페인 여행
- redis
- JBOSS
- Business English
- 베트남
- ubuntu
- 도덕경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함