[MSSQL] LIKE, NOT LIKE 사용시 대괄호 관련 문제 해결(와일드카드 문자)

LHJ·2022년 6월 7일
0

특정 검색을 요구하는 쿼리문 작성할 때 대괄호 안에 특정 문자열이 들어간다면, 해당 내용이 검색이 안되게끔 의도하는 작업을 진행했었다.

하지만 예상과는 다르게 대괄호 내의 문자열 정보만이 아닌 문자열과 유사한 내용도 같이 사라졌다.

이러한 문제를 해결하기 위해 와일드카드 문자를 작성하여 사용하여야 한다.

와일드카드 문자설명예시
%문자가 0개 이상인 문자열 포함WHERE TITLE LIKE '테스트%' 로 작성 시, 제목에 "테스트"를 포함한 이후 문자열들까지 찾음
_(언더바)단일문자(갯수)'_kite' 시 nkite, fkite 등 문자열 kite를 포함한 다른 문자열을 찾음
[ ]지정된 범위[a-h] 또는 집합 [12345678] 에 있는 단일 문자WHERE score like '[a-f]grade' 시 grade로 끝나고 a-f 범위 사이의 문자열을 찾는다.
[^]지정된 범위[a-h] 또는 집합 [12345678] 에 없는 단일 문자WHERE room like 'ko[^r]%'은 ko로 시작하고 r로 시작하는것이 아닌 다른 문자들이 들어간 문자열을 찾는다.

기존에 작성했던 쿼리는 WHERE TITLE NOT LIKE '%[테스트]%' 였기 때문에, 테스트라는 문자열이 어떻게든 들어가있는 제목들이 제외됐었다. (ex) 테크 스토리 트리)

이러한 문제를 해결하기 위해 다음과 같은 쿼리를 사용하였다.

WHERE TITLE NOT LIKE '%[[테스트]]%'

다음과 같이 쿼리를 사용하면 [테스트] 대괄호 내에 있는 문자열을 포함하는 정보만 제외 할 것이다. (ex) [테스트] 테스트, [테스크 트론] 배치)

생각보다 단순한 해결법이긴 했지만, 정교함이 조금은 떨어지는 듯한 느낌이다.

이번 기회를 통해 와일드카드 문자에 대해 다시 생각해보는 시간을 가지게 된 것 같다.

0개의 댓글