4.0 KiB
4.0 KiB
08강. 패턴 매칭에 의한 검색
LIKE술어를 사용하면 문자열의 일부분을 비교하는부분 검색을 할 수 있다.
LIKE
열 LIKE 패턴
특정 문자나 문자열이 포함되어 있는지를 검색하고 싶은경우에 사용하는 방법이다.패턴 매칭또는부분 검색이라고도 한다.
1. LIKE로 패턴 매칭하기
LIKE술어를 사용하면 열 값이 부분적으로 일치하는 경우에도 참이 된다.
LIKE
열명 LIKE '패턴'
LIKE술어는 이항 연산자처럼 항목을 지정한다.- 왼쪽에는 매칭 대상을 지정하고 오른쪽에는 패턴을 문자열로 지정한다.
- 단, 수치형 상수는 지정할 수 없다.
- 패턴을 정의할 때는
%_과 같은메타문자를 사용할 수 있다. 와일드카드라고도 불리는 메타문자는 패턴 매칭 시임의의 문자 또는 문자열에 매치하는 부분을 지정하기 위해 쓰이는특수문자이다.퍼센트(%)는 임의의 문자열을 의마하며,언더스코어(_)는 임의의 문자 하나를 의미한다.- 패턴을 정의할 때는 메타문자를 여러 개 사용할 수 있다.
- 메타문자를 전혀 정의하지 않아도 문제는 없지만, 완전 일치로 검색되므로 의미가 없다.
- 와일드카드로 자주 쓰이는
*는LIKE에서는 사용할 수 없다.
LIKE 술어를 사용하여 패턴 매칭으로 검색할 수 있다!
패턴을 정의할 때 사용할 수 있는 메타문자로는 %와 _이 있다!
- 메타문자 패턴은
%SQL,%SQL%,SQL%의 형식으로 사용된다.
%는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다!
SQL%을 이용한 검색은 문자열 앞쪽에 지정한 문자와 일치하므로전방 일치라고 부르며, 지정한 문자 뒤로 임의의 문자열이 존재하게 된다.%SQL%의 경우는 지정 문자열이 중간에 있기 때문에중간 일치라고 부르며 지정한 문자 앞뒤로 임의의 문자열이 존재한다.- 마찬가지로
%SQL의 경우에는후방 일치라고 하며, 앞쪽에 임의의 문자열이 존재한다.
2. LIKE로 %를 검색하기
LIKE에서는 메타문자 부분이 임의의 문자열을 의미하므로,%자신을 검색조건으로 지정할 때는WHERE text LIKE %%%로도 매치하지 않기 때문에 구분할 필요가 있다.- 이러한 문제를
이스케이프라는 방법으로 처리할 수 있다. LIKE로%를 검색하는 경우에는\%와 같이\을%앞에 붙인다.- 결국
%를 포함하는 데이터를 검색하고 싶을 경우 조건식은WHERE text LIKE '%\%%'와 같다.
%를 LIKE로 검색할 경우에는 %로 한다!
_를 LIKE로 검색할 경우에는 _로 한다!
3. 문자열 상수 '의 이스케이프
- 메타문자를 검색할 때처럼 문자열 상수를 검색할 때도 같은 문제가 발생한다.
- 문자열 상수 안에
'를 포함하고 싶을 경우,표준 SQL에서는'를 2개 연속해서 기술하는 것으로 이스케이프 처리를 할 수 있다. - 예를 들어
'It's'라는 문자열을 문자열 상수로 표기하면'It''s'로 쓴다. - 또한
'하나만 문자열 데이터일 경우에는''''으로 쓰면 된다.
문자열 상수 안에 ' 기술하기
It's -> 'It''s'
' -> ''''
- SQL에서는 싱글쿼트로 문자열 상수를 기술하는데 시작의
'과 끝의'이 정확하게 표기되지 않으면 에러가 발생하므로 주의해야 한다.
'을 문자열 상수 안에 포함할 경우는 '를 2개 연속해서 기술한다!
- 간단한 패턴 매칭이라면
LIKE로 충분하다. - 복잡한 패턴을 매칭하는 경우는
정규 표현식(Regular Expression)을 사용하는 편이 낫다. - 정규 표현식에서는 더 많은 메타문자를 사용해서 폭넓게 패턴을 지정할 수 있다.