[데이터베이스] Pattern match, Posix Regular Expression
데이터베이스 패턴 매치(Pattern match), Posix Regex 관련해서 공부한 내용을 포스팅하고자 합니다.
다음의 교재를 참고했음을 미리 밝힙니다.
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 : 앞에 매칭된 값을 불러서 재사용 합니다.
'[컴퓨터공학] > [데이터베이스]' 카테고리의 다른 글
[데이터베이스] SQL 집합 연산 (0) | 2022.06.13 |
---|---|
[데이터베이스] Null Value (0) | 2022.06.12 |
[데이터베이스] Relational Algebra 예제 (0) | 2022.03.30 |
[데이터베이스] 관계 대수 (Relational Algebra) (0) | 2022.03.29 |
[데이터베이스] 데이터베이스, DBMS (0) | 2022.03.09 |