[Tech] Oracle LIKE 사용시 _ (underscore) 주의사항 (special pattern-matching characters)

– Environment : Oracle 

– Problem :  Like 절 사용시 _ (underscore) 를 사용하면,

wild card 로 인식하여 잘못된 결과를 반환함

ex) SELECT X FROM TAB WHERE ID LIKE ‘AAA_’ 

=> AAA_ ,  AAA0, AAAA  등 모든 것이 검색됨 

 

– cause : oracle like 절에서  underscore  _ 는  정규식의 ? 와 동일한 효과를 낳음 

– solution : underscore 앞에 역슬래시(backslash)를 추가하고 ESCAPE 절을 추가하여 상수문자로 인식하게 처리 

ex)
java :  id = id.replaceAll(“\\”, “\\\\”);   
sql : WHERE id LIKE ‘AAA\_’ ESCAPE ‘\’;

– cf : 역슬래시 대신 다른 문자를 사용해도 가능함 

– retrospective : 심각한 문제가 될 뻔 했음…  oracle 쓸때는 잊지말아야 할 주의사항임. 

– references : http://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions016.htm

 

Advertisements

태그: , , ,

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중


%d 블로거가 이것을 좋아합니다: