른록노트
[Mssql] like 검색 시 대괄호 치환하기 본문
1. 문제상황
현재 mssql을 mybatis로 사용하고 있는데
like문 사용시 대괄호 검색이 제대로 먹히지 않았다. 찾아보니 like문에서 사용하는 agument중에 대괄호가 있었고 치환작업이 필요하다고 생각했다.
<select parameterType="testVO">
select * from demotable where name like '%'+#{name}+'%'
<select>
2. 해결방법
<select parameterType="testVO">
select * from demotable where name like '%'+ REPLACE(#{searchKeyword},'[','\[') +'%' ESCAPE '\'
<select>
동작을 설명하면 먼저 대괄호 agument에 일치하는 값이 없도록 '' (마음대로 1글자) ESCAPE 문자를 붙혀서 치환해준 후
ESCAPE 명령어로 내부적으로 ''(ESCAPE) 문자를 삭제해준다.
escape_character
와일드카드가 와일드카드가 아닌 일반 문자로 해석됨을 나타내기 위해 와일드카드 문자 앞에 배치되는 문자입니다. escape_character는 기본값이 없고 하나의 문자로만 선언되어야 하는 문자 표현식입니다. (저는 \로 사용했습니다.)
참고사이트
반응형
Comments