회사 PMS에서 사업 검색할 때 LIKE를 썼다.
WHERE LOWER(COALESCE(notice_name, '')) LIKE ? ESCAPE '\'
LIKE는 문자열 일부가 포함되는지 찾을 때 쓴다.
%고도화%
→ 앞뒤에 뭐가 있어도 "고도화"가 포함되면 검색
근데 %랑 _는 LIKE 안에서 특별한 의미가 있다.
%
→ 여러 글자
_
→ 한 글자
그래서 사용자가 검색어에 %나 _를 직접 넣으면
원래 문자 그대로가 아니라 패턴으로 해석될 수 있다.
Biz Assist에서는 검색어를 넣기 전에 escape했다.
value
.replace("\\", "\\\\")
.replace("%", "\\%")
.replace("_", "\\_");
그리고 SQL에는
ESCAPE '\'
를 붙였다.
즉
사용자가 입력한 %
→ 와일드카드가 아니라 실제 % 문자로 검색
하게 만든 것.
LIKE 검색 만들 때는 %랑 _ 처리도 같이 봐야 한다.