이번 주제는 와일드카드( _ 문자, % 문자 )를 문자 그대로 해석하기 입니다.
오라클에서 LIKE 는 _ 문자와 % 문자가 특수한 의미를 가집니다.
- _(underscore) : 어떠한 문자든 관계 없이 특정한 하나의 문자
- %(percent sign) : 0 혹은 그 이상의 문자(NULL 제외)
그런데 실제로 _ 나 % 를 문자 그대로 해석하고 싶을 때가 있을 것입니다.
이때 사용 하는 것이 ESCAPE 구문입니다.
[ ESCAPE '\' ] 를 추가하시면 선행하는 '\' 이후 문자가 그대로 해석이 됩니다.
예시에서 [ LIKE '%A\_B%' ESCAPE '\' ] 는
%<특정 아무 문자(없어도 됨)> + A + _문자 + B + %<특정 아무 문자(없어도 됨)>
를 조회합니다.
ESCAPE 다음에 '\' 문자는 '$' 와 같은 다른 문자로 대체하셔도 괜찮습니다만
보통 '\' 문자를 이스케이프로 쓰는 경향이 많으니 관습상 '\' 쓰시는 것을 추천해드립니다.
아래는 예시 자료입니다.
WITH TA AS
(
SELECT 'A_B' C FROM DUAL UNION ALL
SELECT 'A\B' FROM DUAL UNION ALL
SELECT '_%AB' FROM DUAL UNION ALL
SELECT '_A\B' FROM DUAL UNION ALL
SELECT '\A_B' FROM DUAL UNION ALL
SELECT '%A_B' FROM DUAL UNION ALL
SELECT '%AA' FROM DUAL UNION ALL
SELECT '_A\CB' FROM DUAL
)
SELECT '--------ALL--------' EXAMPLE FROM DUAL UNION ALL
SELECT * FROM TA UNION ALL
SELECT '--------LIKE--------' FROM DUAL UNION ALL
SELECT * FROM TA WHERE C LIKE '%A\_B%' UNION ALL
SELECT '--------LIKE ESCAPE--------' FROM DUAL UNION ALL
SELECT * FROM TA WHERE C LIKE '%A\_B%' ESCAPE '\'
;