[컴퓨터공학]/[데이터베이스]

[데이터베이스] Pattern match, Posix Regular Expression

딥러닝 도전기 2022. 6. 12. 22:28

[데이터베이스] Pattern match, Posix Regular Expression

 

데이터베이스 패턴 매치(Pattern match), Posix Regex 관련해서 공부한 내용을 포스팅하고자 합니다.

다음의 교재를 참고했음을 미리 밝힙니다.

 

A First Course in Database Systems

 


Pattern Match

Syntax

  • string LIKE pattern
  • string NOT LIKE pattern
  • string LIKE pattern ESCAPE escape-char

 

첫 번째, string LIKE pattern 의 Syntax는 string전체가 pattern에 만족하는 것을 의미합니다.

두 번째, string NOT LIKE pattern 의 Syntax는 string전체가 pattern에 만족하지 않는 것을 의미합니다.

세 번째, string LIKE pattern ESCAPE escape-char 의 Syntax는 string전체가 pattern에 만족하며, escape character를 escape-char 로 사용한다는 것을 의미합니다.

 

Meta characters

  • '%'
  • '_'
  • '\'

위의 세 가지 기호를 Meta character로 사용합니다.

%는 0개 부터 무한개의 임의의 character를 나타냅니다.

_ 는 1개의 임의의 character를 나타냅니다.

\  는 default escape character입니다. 즉, 세 번째 패턴처럼 escape-char를 지정해주지 않으면 기본 값으로 '\' 을 escape character로 사용합니다.

 

예시)

 

  • title LIKE 'star%'

 >> 'star'로 시작하는 모든 title

 

  • title LIKE 's%'

>> 's' 로 시작하는 모든 title

 

  • title LIKE '%s'

>> 's'로 끝나는 모든 title

 

  • title LIKE '%s%'

>> 's'를 포함하는 모든 title

 

  • title LIKE 's_ _ _'

>> 's'로 시작하며, 뒤에 3글자가 더 있는 title

 


Posix Regular Expression

위에서 알아본 LIKE와는 다르게, ~ 기호를 사용하며 ~* 를 사용하여 대소문자 구분을 없앨 수 있습니다.

또한, !~ 을 사용하여 'NOT' 의 의미를 더합니다.

 

LIKE는 string전체를 매치시켜야 했던 반면, ~는 substring만 매치하면 됩니다.

즉, string 전체가 pattern을 만족할 필요는 없고 substring 어디에선가 pattern을 만족하면 됩니다.

즉, ~ 'abc' = LIKE '%abc%' 라고 생각하시면 될 것 같습니다.

 

정규표현식은 다음과 같습니다.

 

1. . : 한 개의 character을 의미합니다.

2. ? : 0이나 1개의 character을 의미합니다.

3. * : 0개 ~ 무한개의 character을 의미합니다.

4. + : 1개 ~ 무한개의 character을 의미합니다.

5. {m, n} : 최소 m번 이상, n번 이하 매칭을 의미합니다.

6. {m} : 정확히 m번 매칭되는 것을 의미합니다.

7. ^ $ : string의 시작과 끝을 의미합니다.

8. () : grouping을 의미합니다.

9.  | : or을 의미합니다.

10. [list] : list안의 character가 한 개 있어야 함을 의미합니다.

11. [^list] : list안의 character가 있으면 안되는 것을 의미합니다.

12. \n : 앞에 매칭된 값을 불러서 재사용 합니다.

 

 

반응형