SELECT * FROM BIZ_TABLE
WHERE position ( 'hell' in BIZ ) > 0
장점 : 변환작업 불필요. SQL 만으로 처리가능
단점 : SQL 가독성이 떨어짐 (LIKE 문이라고 생각이 안됨) , 대소문자를 무시할 수 없음
입력값 escaping 처리
인자가 될 변수의 값을 escape 값으로 변환 \% , \_ , \\
예시
SQL
LIKE concat('%', regexp_replace( #{variable}, '([%_])', '\\\1','g'), '%')
or
LIKE concat('%', variable, '% escape '\') -- 이 떄도 variable 변수에 대한 escaping 은 필요함
intro
문제상황
특정 문자가 포함된 경우를 검색한다. 특정 문자에는
%
,_
,\
,--
둥 특수문자가 포함될 수 있다.SQL 예시 (LIKE)
문제가 되는 입력
문제가 되는 이유
%
_
는 SQL 에서 wildcard 문자로 인식됨^
-
{}
[]
추가회피하기
LIKE 대신 position 함수 사용
입력값 escaping 처리
\%
,\_
,\\
java
reference