2009년 5월 20일 수요일

Wild Character와 Escape

문자열을 검색할 때, 전체를 검색하는 것 보다 포함된 문자를 검색하는 경우가 많다. 이럴 때 LIKE 연산자와 함께 많이 쓰이는 것이 Wild Character 이다. %나 _를 사용하여 포함된 것을 나타내는데 %는 길이에 상관이 없으sk _는 길이와 위치에 상관이 있다.

CREATE TABLE tbl_watch(
no NUMBER(2),
name VARCHAR2(20),
bigo VARCHAR2(100)
) tablespace users;

INSERT into tbl_watch values(1,'금시계','고객만족도 99.99점 획득한 고급시계');
INSERT into tbl_watch values(1,'은시계','순은 99.99% 함유한 고급시계');

COMMIT;

SELECT * FROM tbl_watch;

tbl_watch 테이블에서 bigo 칼럼에 99.99%라는 문자가 들어있는 행만 추출해 보자. 일반적으로 검색을 하는 쿼리문은 다음과 같다.

SELECT *
FROM tbl_watch
WHERE bigo LIKE '%99.99%%'

위의 경우, 검색할 문자열 중에 %가 포함되어 있기 때문에 이를 Wild로 인식, 원하는 결과인 '은시계' 뿐만 아닌 '금시계'역시 포함이 되었다. 이럴 경우 이를 보완하기 위해 Escape로 \를 설정하여 일반 문자로 인식하도록 한다.

SELECT *
FROM tbl_watch
WHERE bigo LIKE '%99.99\%%' escape '\';

Escape는 다음에 오는 문자를 Escape Character 로 지정하고, 검색할 문자열 중 Escape character 다음의 문자가 있는 부분 다음의 문자열의 기능을 상실하고 순수 문자로 처리된다. 즉 99.99\%는 순수한 문자열 99.99% 가 되어 검색이 가능 한 것이다.

댓글 없음:

댓글 쓰기