SQL문에서 like를 이용한 검색..
오라클 WITH문을 이용해서 테스트 해보겠다..
WITH T AS (
SELECT '324324' COL1, 'ASDDD' COL2 FROM DUAL UNION ALL
SELECT 'AB234C' COL1, 'AG_%%D' COL2 FROM DUAL UNION ALL
SELECT 'A3424B' COL1, 'AS_DFD' COL2 FROM DUAL UNION ALL
SELECT 'AB234C' COL1, 'AS_DDD' COL2 FROM DUAL UNION ALL
SELECT 'A3211C' COL1, 'AS_DAZ' COL2 FROM DUAL UNION ALL
SELECT 'AB111C' COL1, 'AG_D%F' COL2 FROM DUAL
)
SELECT * FROM T
WHERE COL1 LIKE 'AB%'
컬럼 COL1 앞 두문자가 AB인 Row를 검색하는 조건이다..
결과는..
AB234C AG_%%D
AB234C AS_DDD
AB111C AG_D%F
컬럼 COL1 뒤 문자가 4C로 끝나는 Row를 검색하는 조건
SELECT * FROM T
WHERE COL1 LIKE '%4C'
결과는
AB234C AG_%%D
AB234C AS_DDD
컬럼 COL1 두번째 문자가 B로 끝나는 Row를 검색하는 조건
_ : 는 문자 하나를 의미한다.
SELECT * FROM T
WHERE WHERE COL1 LIKE '_B%'
결과는
AB234C AG_%%D
AB234C AS_DDD
AB111C AG_D%F
그런데 COL2 값같이 %, _ 포함되어 있는 컬럼을 검색해야 한다면.. ESCAPE 문을 써주면 된다.
컬럼 COL2 앞문자가 AG_로 끝나는 Row를 검색하는 조건은
SELECT * FROM T
WHERE COL2 LIKE 'AG\_%' ESCAPE '\'
결과는
AB234C AG_%%D
AB111C AG_D%F
ESCAPE 옵션은 백슬래쉬(\)문자를 이스케이프문자로 식별하게 해서 _를 조건으로 인식하게 한다.
'sql' 카테고리의 다른 글
오라클 년별, 월별 주차 계산... (0) | 2014.03.21 |
---|---|
오라클에서 join을 이용한 update문.. (0) | 2014.03.20 |
매월 첫번주 월요일 구하기... (0) | 2014.03.17 |
오라클 TRUNC 함수.. (0) | 2014.03.17 |
oracle 분석함수 RANK, DENSE_RANK, ROW_NUMBER 차이.. (0) | 2014.03.17 |