본문 바로가기

프로그래밍/MSSQL

[MSSQL] 조건절 LIKE 검색 조건 (ESCAPE 특수문자 와일드 카드 (예약어) 검색)

반응형

 

 

 

WHERE LIKE 에서 사용하는 검색 조건에 대해 알아보자

 

SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE 'A%' 
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '%A%' 
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '_A%' 
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '[ABC]%' 
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '[A-D]%' 
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '[^A]%'

 

다음과 같이 여러 검색 조건이 사용된다.

하나씩 알아보도록 하자.

 

1) A%

'A'로 시작하는 모든 문자열

 

2) '%A'%

'A'가 포함된 모든 문자열

 

3) '_A%'

두 번째 문자가 'A'인 모든 문자열

 

4) '[ABC]%'

첫 번째 문자가 'A' 또는 'B' 또는 'C'인 모든 문자열

 

5) '[A-D]%'

첫 번째 문자가 ABCD에 속하는 모든 문자열

 

6) '[^A]%'

첫 번째 문자가 'A'가 아닌 모든 문자열

 

 

 

 

조건절에서 사용하는 LIKE에서 특수문자를 실제 문자로 인식하도록 적용시켜보자

 

 

조건절 LIKE를 사용해서 문자열에 '%' 가 포함된 데이터를 찾으려고 한다.

내가 조회하고자하는 데이터는 '손%꽁쥐' 이 데이터다.

하지만 LIKE '%'로 조회한다면?

 

WITH TEST_A (NAME) AS (
    SELECT '손%꽁쥐' UNION ALL
    SELECT '손꽁쥐' UNION ALL
    SELECT '손_꽁쥐'
)
SELECT * FROM TEST_A WHERE NAME LIKE '%'

 

결과 데이터

 

 

결과는 다음과 같이 모든 데이터가 출력된다.

LIKE 문에서 %는 실제 문자가 아닌 검색 기능에 해당하는 문자로 쓰이기 때문이다.

 

 

 

 

 

 

 

그렇다면, %를 실제 문자로 인식시켜보자

 

 

방법1.

 

LIKE '%[문자][실제문자로인식시킬문자]%' ESCAPE '[문자]'

방법은 위와 같고, 이것을 실제로 적용시켜보자.

 

WITH TEST_A (NAME) AS (
    SELECT '손%꽁쥐' UNION ALL
    SELECT '손꽁쥐' UNION ALL
    SELECT '손_꽁쥐'
)
SELECT *
FROM TEST_A
WHERE NAME LIKE '%#%%' ESCAPE '#'

 

 

결과 데이터

 

여기서 '#'는 임의대로 아무 문자나 사용한 것이고, 이외에도 \, &, a 등 아무 문자나 사용해도 상관없다.

 

 

 

 
 

방법2.

 

LIKE '%[검색할문자]%'

 

WITH TEST_A (NAME) AS (
    SELECT '손%꽁쥐' UNION ALL
    SELECT '손꽁쥐' UNION ALL
    SELECT '손_꽁쥐'
)
SELECT *
FROM TEST_A
WHERE NAME LIKE '%[%]%'

 

결과는 위의 예제와 마찬가지로 동일하다.

 

결과 데이터

 

 

반응형