블로그 이미지
잡초 개발자의 좌충우돌 이야기 yysvip

카테고리

분류 전체보기 (211)
Java Programing (24)
Web Programing (20)
Database (36)
Tool (46)
까칠한 IT (27)
까칠한 정보 (42)
까칠한 Strory (16)
까칠한 Project (0)
Total1,164,497
Today4,464
Yesterday4,153

달력

« » 2018.12
            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          

공지사항

LIKE 구문 사용

  까칠한 남자 Strory       yysvip.tistory.com       잡초 개발자 까찰한 쑤의 좌충우돌 개발 이야기

 

iBatis를 사용 SQL쿼리문을 작성할 때 보통 변수 표시를 #value# 식으로 하는데,
WHERE colummn LIKE "#value#"

이와 같은 구문을 사용 시
PrepareStatement 형식으로 바뀌면서 '%?%'가 되어 오류가 발생한다.

그래서 iBatis를 사용할 시는 아래와 같은 방법을 사용하여 해결하여야 한다.


iBATIS에서 LIKE 검색하는 방법
 
1. 전달되는 파라미터 값 안에 SQL 와일드 문자를 포함하는 방법

2. 검색할 텍스트가 파라미터로 전달할 수 있는 SQL표현식 (SQL쿼리문)을 작성하는 방법


 mySQL
 SELECT * FROM tbl_name WHERE column_name LIKE
concat('%', #value#, '%')


 ORACLE
 SELECT * FROM tbl_name WHERE column_name LIKE '%' || #value# || '%'


 SYSBASE/SQL_SERVER
 SELECR * FROM tbl_name WHERE column_name LIKE
'%' + #value# + '%'


3. 문자열 대체법($연사자 사용)

 SELECT * FROM tbl_name WHERE column_name LIKE "%$value$%"

"%$value$%"를 이용하면 value property가 그대로 치환되면서 손 쉽게 사용할 수 있다.
하지만 변수 안의 모든 내용이 그대로 입력되므로 SQL injection 공격으로 인한 보안위험이 높다.


3번의 경우 바로 값이 바로 치환되는 방법으로
특정 변수가 바로 DB에 입력되므로 보안에 취약하며, 절대 사용하지 말아야 할 것 이다. 

Posted by yysvip

최근에 달린 댓글

최근에 받은 트랙백

글 보관함