PostgreSQL Regular Expressions
Similar to 가 SQL 표준으로 1999년에 들어가긴 했지만 잘 안 쓰인다. 대신 POSIX-style이 중요하다. Editor라던지 language라던지 text 도구라던지 대부분이 POSIX을 표준으로 따른다. ~.~* 로 쓰인다.
식 | 설명 | 예시 |
. | 1개의 문자와 일치한다. | Star… |
? | 바로 앞의 문자가 없거나 한 번 있는 것이다. | a?b는 b, ab를 포함한다. |
* | 0개 이상의 문자를 포함한다. | a*b는 b, ab, aab, aaab를 포함한다. |
+ | 1개 이상의 문자를 포함한다 | a+b는 ab, aab, aaab를 포함하지만 b는 포함하지 않는다. |
{m, n} | {m, n} m부터 n까지의 개수만큼만 나와야 한다. | a{1,3}b는 ab, aab, aaab를 포함하지만, b나 aaaab는 포함하지 않는다. |
{m} | 앞서 있는 문자가 m만큼만 나와야 한다. | a{3}b는 aaab만 포함한다. |
{m,} | 앞서 있는 문자가 m이상 나와야 한다. | a{2,}b는 aab, aaab, aaaab를 포함한다. ab는 포함되지 않는다. |
^ $ | String의 시작을 ^, String의 끝을 $로 나타낸다. | ^whole line$는 whole로 시작해서 line으로 줄이 끝나야 한다. |
\ | 특수 문자를 식에 문자 자체로 포함한다. | \% |
() | 여러 식을 하나로 묶을 수 있다. (grouping) | abc|adc와 a(b|d)c는 같은 의미이다. |
| | Or 개념이다. | (men|women) |
[] | [ ] 사이의 문자 중에서만 와야 한다. 또한, ‘-‘ 기호와 함께 쓰면 범위를 지정할 수 있다. |
[abc]d는ad, bd, cd를 뜻한다. [a-z]는a부터z까지 중 하나, [0-9]는 0부터9까지 중의 하나를 의미한다. |
[^list] | [ ] 사이의 문자는 오면 안 된다는 뜻이다. | [^abc] abc 모두 아니어야 한다. |
\n | 앞서 나온 값이 똑같이 나와야 한다. | The (.*) the (.*) and \1 or \2 : \1에는 첫 번째 괄호의 것이 \2에는 두번째 괄호와 똑같이 와야 한다. |
Ex) select * from Movie where title ~ ‘Star .*’;
>> title ~ ‘Star Wars’
>> title ~ ‘^S.*’
>>title ~ ‘.*of.*’
>>title ~ ‘Star ….’
Movie 테이블의 title중에 Star로 시작하는 영화를 뽑는 것이다. .*을 사용했기 때문에 Star로 시작하고 그 뒤에 1개의 문자를 포함하고 있으면 된다.
^S로 설정하였기 때문에 S로 시작하고 뒤에 .*이기때문에 1개 이상의 문자만 오면 되는 조건이다.
.*of.*은 앞뒤에 무슨 단어가 오는 지 모르고 중간에 of만 기억날 때 사용할 수 있는 것으로 중간 부분에 of를 포함하면 된다는 조건이다.
Oracle Regular Expression
식은 POSIX표준을 똑같이 따르고 있어 위의 표를 참고하면 될 것 같다.
Ex) select title from Movie where REGEXP_LIKE(title, ‘^Star.*’);
>> REGEXP_LIKE(title, ‘Star Wars’)
>> REGEXP_LIKE(title, ‘^[ST].*’)
>> REGEXP_LIKE(title, ‘.*-.*’)
Comparing Dates and Times
Date: DATE ‘2021-05-08’
Time: TIME ’15:40:00’, TIME ’15:40:00.12345’, TIME ’12:00:00+9:00’
Timestamp: TIMESTAMP ‘2021-05-08 15:40:00’
Ex) DATE ’1999-05-14’ < DATE ‘2021-05-08’ (과거가 미래보다 작은 값으로)
Extract : Get a field from date or time value
Syntax: EXTRACT(field FROM expression)
1955면 1월 1일 이후에 태어난 배우들을 뽑은 것이다. 더 큰 값이 더 이후의 값이라고 생각하면 편할 것 같다.
'학부 전공 > DB' 카테고리의 다른 글
SQL join사용하기 (0) | 2021.06.19 |
---|---|
SQL NULL Value & Ordering (0) | 2021.06.19 |
SQL Comparisionb of String & Pattern Match (0) | 2021.06.19 |
SQL 기본 사용법 (0) | 2021.06.19 |
SQL 역사 (0) | 2021.06.19 |