반응형
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 '%[%]%'
결과는 위의 예제와 마찬가지로 동일하다.
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] 문자열을 뒤에서 부터 구분자로 잘라보자 (RIGHT, REVERSE, CHARINDEX, PATHINDEX) (0) | 2017.02.13 |
---|---|
[MSSQL] ' (따옴표) 포함된 문자열 출력 (0) | 2017.02.13 |
[MSSQL] PIVOT, UNPIVOT (행렬 변환) (6) | 2017.02.10 |
[MSSQL] DATENAME, DATEPART (요일, 올해 몇번째 날, 주말을 제외한 평일 일수) (0) | 2017.02.09 |
[MSSQL] PARTITION BY 테이블 분할 함수 (0) | 2017.02.09 |