른록노트

[Mssql] like 검색 시 대괄호 치환하기 본문

DB/[Mssql]

[Mssql] like 검색 시 대괄호 치환하기

른록 2021. 12. 24. 16:33

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는 기본값이 없고 하나의 문자로만 선언되어야 하는 문자 표현식입니다. (저는 \로 사용했습니다.)

참고사이트

Mssql like document

반응형
Comments