행위

Mysql 정규식

DB CAFE

Dbcafe (토론 | 기여)님의 2020년 3월 31일 (화) 16:49 판 (정규식 패턴)
thumb_up 추천메뉴 바로가기


1 정규식 패턴[편집]

android ?  : 글자 0 개 또는 1 개 일치 -> books?  : book, books

     .      : 단일문자를 매치시킨다. 즉 문자 하나 일치 ->.ap : map, jap, kap, lap ....
     +      : 문자 여러개 반복(1자 이상 일치) -> la+ : la, laa,laaa ...
     *      : 문자 여러개 반복(0자 이상 일치)  -> la* : l, la, laa, laaa...
     ^      : 문자열의 처음 -> ^1 -> 1로 시작되는 줄
     $      : 문자열의 끝  -> 1$ -> 1로 끝나는 줄
    ()      : 그룹화 ->('(abc)*') : 'abc'문자열이 연속적으로 0 번 이상 
    [문자들..]   : 괄호안의 어느 문자와 일치   -> [0-9] : 모든 숫자, [A-Za-z] : 모든 영문자   
    {숫자}        : 숫자만큼 반복


틀:고지사항2



1.1 regexp '문자' 정규식[편집]

(1) '문자' : 아무런 기호가 없는 것 -> like '% 문자 % '와 일치

mysql> select * from pet where species regexp 'do' ; -> do가 최소한 1회 일치
(= SELECT * FROM pet WHERE species LIKE '%do%'; )
mysql> SELECT * FROM pet WHERE name REGEXP 'w';

1.2 regexp '?' 정규식[편집]

(2) ? : 글자 0 개 또는 1 개 일치 -> books?  : book, books

mysql> select * from pet where species regexp 'do?'; -> d 또는 do가 일치

1.3 regexp '.' 정규식[편집]

 (3) . : 단일문자를 매치시킨다. 즉 문자 하나 일치 ->.ap : map, jap, kap, lap ....
mysql> select * from pet where species regexp '.d'; ->단일문자 d로 끝나는 앞의 모든 문자


mysql> select * from pet1 where species regexp 'd.'; -> 단일문자 d로 시작되는 뒤의 모든 문자
위에서 d.로 검색하는 경우에 bird는 검색되지 않음에 유의함.
mysql> select * from pet1 where species regexp '.d.'; 중간에 d가 들어가는 문자
mysql> select * from pet where name regexp '^.....$'; -> 시작부터 5글자로 끝나는 문장을 찾는다.
(= SELECT * FROM pet WHERE name REGEXP '^.{5}$'; )
mysql> select * from pet where name regexp '.....$'; -> 끝에서 5글자 이상이 되는 문장

1.4 regexp '+' 정규식[편집]

(4) + : 문자 여러개 반복(1자 이상 일치) -> la+ : la, laa,laaa ...
mysql> select * from pet where name regexp 'f+'; -> f가 1회 이상 반복


1.5 regexp '*' 정규식[편집]

  (5) * : 문자 여러개 반복(0자 이상 일치)  -> la* : l, la, laa, laaa...
mysql> select * from pet where name regexp 's*'; -> s가 0회 이상 들어 있는 문자

1.6 regexp '^' 정규식[편집]

(6) ^ : 문자열의 처음 -> ^1 -> 1로 시작되는 줄                   
mysql<source lang=sql>> select * from pet where owner regexp '^b'; -> b로 시작되는 문자

  (= SELECT * FROM pet WHERE owner LIKE 'b%'; )
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
   바이너리 키워드로 인해 소문자 b로 시작하는 이름을 찾는다.

1.7 regexp '$' 정규식[편집]

 (7) $ : 문자열의 끝  -> 1$ -> 1로 끝나는 줄
mysql> select * from pet where name regexp 'r$'; -> 끝이 r로 끝나는 문자

1.8 regexp '(그룹)' 정규식[편집]

 (8) () : 그룹화 ->('(abc)*') : 'abc'문자열이 연속적으로 0 번 이상 

1.9 regexp '[문자]' 정규식[편집]

  (9) [문자들..] : 괄호안의 어느 문자와 일치
<source lang=sql>mysql> select * from pet where name regexp '[ab]'; -> 문장 중에 a 또는 b 가 들어 있는 문자
mysql> select * from pet where name regexp '^[bc]';  -> b 또는 c로 시작되는 문자
mysql> select * from pet where death regexp '[0-9]';  [0-9] -> 모든 숫자
 mysql> select * from pet where sex regexp '[A-Za-z]'; [A-Za-z] -> 모든 영문글자

</source>


1.10 regexp '{숫자}' 정규식[편집]

(10){숫자} : 숫자만큼 반복   // {2,4} -> 2회 ~ 4회 반복
  mysql> select * from pet where name regexp 'ow{1}'; -> ow 1회
mysql> select * from pet where owner regexp 'n{1,2}'; -> n이 1회 또는 2회되는 문자
  • {n}('repeat-n-times') 연산자를 사용했다.
mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$'; -> 시작부터 5문자가 되는 문자


1.11 regexp '|' 정규식[편집]

(11) | : OR 연산 (또는)  -> ('A|B') : A 또는 B
mysql> select * from pet where name regexp '^c|y$';


1.12 regexp '문자' 정규식[편집]

 (12) - : 문자의 지정 범위는 -를 사용한다. -> [0-9] : 모든 숫자 , [a-z] : 모든 영문자
mysql> select * from pet where name regexp '^[a-f]';

=== rl

ike '문자' 정규식 ===
 (13) mysql> select 필드명 from 테이블명 where 필드명 RLIKE '[[:digit:]]+';
    문자열에 숫자가 포함된 행을 구하는 SQL 구문
mysql> select * from pet where death rlike '[[:digit:]]+';