MSSQL LIKE 특수문자(와일드카드) ESCAPE 검색 방법 ([, %, _)

MSSQL LIKE 특수문자(와일드카드) ESCAPE 검색 방법 ([, %, _)

MS SQL에서 와일드카드 문자 또는 특수문자를 LIKE 조건으로 검색해야 할 때가 있는데요. 그럴 경우 ESCAPE 옵션을 사용하시면 됩니다. 보통 설명 같은 필드에 사용자가 특수문자 [], %, _를 입력하는 경우가 있는데 ESCAPE 옵션을 사용하지 않고 LIKE로 검색을 하면 조회가 되지 않습니다. 그럼 LIKE ESCAPE 옵션을 사용하여 특수문자를 검색하는 방법에 대해서 알아보죠.

◎ 포스트 기준 – Microsoft SQL Server 2019, SSMS 18.11

1. LIKE 구문 (Microsoft 기술 문서)

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

▶ match_expression : 문자 데이터 형식의 유효한 식

▶ pattern : match_expression에서 검색할 특정 문자열이며 다음과 같은 유효한 와일드카드 문자 포함 가능

와일드카드 문자Description예제
%0개 이상의 문자를 가진 문자열WHERE title LIKE ‘%computer%’는 책 제목에 ‘computer’ 단어가 있는 모든 책 제목을 찾습니다.
_ (밑줄)단일 문자WHERE au_fname LIKE ‘_ean’은 ean으로 끝나는 모든 4문자 이름을 찾습니다(Dean, Sean 등)
[ ]지정된 범위([a-f]) 또는 집합([abcdef])에 있는 단일 문자WHERE au_lname LIKE ‘[C-P]arsen’은 arsen으로 끝나고 C와 P 사이의 단일 문자로 시작하는 저자의 성을 찾습니다. 예를 들면 Carsen, Larsen, Karsen 등입니다. 범위 검색에서 범위에 포함되는 문자는 데이터 정렬의 정렬 규칙에 따라 다를 수 있습니다.
[^]지정된 범위([^a-f]) 또는 집합([^abcdef])에 없는 단일 문자WHERE au_lname LIKE ‘de[^l]%’은 de로 시작하고 이어지는 문자가 l이 아닌 저자의 성을 모두 찾습니다.

▶ escape_character : 와일드카드 문자 앞에 입력하여 와일드카드가 일반 문자로 해석됨을 나타내는 문자. 하나의 문자만을 반환

2. ESCAPE 옵션을 사용하여 특수문자 검색하기 (예제)

▶ 샘플 데이터

샘플 데이터


예제 1) ‘%’ 기호가 포함된 데이터 검색

'%' 기호가 포함된 데이터 검색

▶ NAME LIKE ‘%%%’

→ 원하는 데이터가 검색이 되지 않고 전체가 검색됨

▶ 방법 1) ESCAPE 옵션 사용 : NAME LIKE ‘%!%%’ ESCAPE ‘!’

→ ‘!’ 다음에 ‘%’를 일반 문자로 해석

→ ‘!’ 대신 다른 문자를 사용해도 됩니다.

▶ 방법 2) NAME LIKE ‘%[%]%’


예제 2) ‘[‘ 기호로 시작하는 데이터 검색

'[' 기호로 시작하는 데이터 검색

▶ NAME LIKE ‘[%’

→ 원하는 데이터가 검색되지 않고 검색이 안됨

▶ 방법 1) ESCAPE 옵션 사용 : NAME LIKE ‘![%’ ESCAPE ‘!’

→ ‘!’ 다음에 ‘[‘를 일반 문자로 해석

→ ‘!’ 대신 다른 문자를 사용해도 됩니다.

▶ 방법 2) NAME LIKE ‘[[]%’


예제 3) ‘_’ 기호가 포함된 데이터 검색

'_' 기호가 포함된 데이터 검색

▶ NAME LIKE ‘%_%’

→ 원하는 데이터가 검색이 되지 않고 전체가 검색됨

▶ 방법 1) ESCAPE 옵션 사용 : NAME LIKE ‘%!_%’ ESCAPE ‘!’

→ ‘!’ 다음에 ‘_’를 일반 문자로 해석

→ ‘!’ 대신 다른 문자를 사용해도 됩니다.

▶ 방법 2) NAME LIKE ‘%[_]%’


이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤