Files
2021-12-13 21:23:43 +09:00

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)을 사용하는 편이 낫다.
  • 정규 표현식에서는 더 많은 메타문자를 사용해서 폭넓게 패턴을 지정할 수 있다.