MySQL REGEXP 대소문자 - MySQL REGEXP daesomunja

pat 패턴에 대한 문자열 expr 패턴 매치를 수행하며, 매치하면 1를, 그렇지 않으면 0을 반환합니다. expr 또는 pat 의 값이 NULL이면 NULL를 반환하고, 바이너리 문자열을 사용할 때에만 대소문자를 구분하게 됩니다.

 expr REGEXP pat

 or

 expr RLIKE pat

#ex.1)
 mysql> SELECT 'a' REGEXP 'A';
       -> 1

 mysql> SELECT 'a' REGEXP BINARY 'A';
       -> 0

 mysql> SELECT 'A' REGEXP BINARY 'A';
       -> 1

#ex.2)
 mysql> SELECT 'a' REGEXP '^[a-z]';
       -> 1

 mysql> SELECT '1' REGEXP '^[a-z]';
       -> 0

#ex.3)
 mysql> SELECT 'a' REGEXP '.*';
       -> 1

 mysql> SELECT 'a' REGEXP 'm%y%%';
       -> 0

#ex.4)
 mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
       -> 1



 ^ 문자열의 시작
 mysql> SELECT 'fo\nfo' REGEXP '^fo$';
                   -> 0

 mysql> SELECT 'fofo' REGEXP '^fo';
                   -> 1

 

 $ 문자열의 끝
 mysql> SELECT 'fo\no' REGEXP '^fo\no$';
                 -> 1

 mysql> SELECT 'fo\no' REGEXP '^fo$';
                 -> 0

 

 * 모든 문자열
 mysql> SELECT 'fofo' REGEXP '^f.*$';
                -> 1

 mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$';
                -> 1

 

 a* 0개 이상의 문자열, a{0,}
 mysql> SELECT 'Ban' REGEXP '^Ba*n';
                   -> 1

 mysql> SELECT 'Baaan' REGEXP '^Ba*n';
                   -> 1

 mysql> SELECT 'Bn' REGEXP '^Ba*n';
                   -> 1

 

 a+ 1개 이상의 문자열, a{1,}
 mysql> SELECT 'Ban' REGEXP '^Ba+n';
                     -> 1

 mysql> SELECT 'Bn' REGEXP '^Ba+n';
                     -> 0

 

 a? 0 또는 1개 포함하는 문자열, a{0,1}
 mysql> SELECT 'Bn' REGEXP '^Ba?n';
                     -> 1

 mysql> SELECT 'Ban' REGEXP '^Ba?n';
                     -> 1

 mysql> SELECT 'Baan' REGEXP '^Ba?n';
                     -> 0

 

 시퀸스 또는 ABC 중 하나와 일치하는 문자열
 mysql> SELECT 'pi' REGEXP 'pi|apa';
                    -> 1

 mysql> SELECT 'axe' REGEXP 'pi|apa';
                    -> 0

 mysql> SELECT 'apa' REGEXP 'pi|apa';
                    -> 1

 mysql> SELECT 'apa' REGEXP '^(pi|apa)$';
                    -> 1

 mysql> SELECT 'pi' REGEXP '^(pi|apa)$';
                    -> 1

 mysql> SELECT 'pix' REGEXP '^(pi|apa)$';
                    -> 0



 ABC 인스턴스가 0개 이상 일치하는 문자열
 mysql> SELECT 'pi' REGEXP '^(pi)*$';
                    -> 1

 mysql> SELECT 'pip' REGEXP '^(pi)*$';
                    -> 0

 mysql> SELECT 'pipi' REGEXP '^(pi)*$';
                    -> 1

#ex.5)
 mysql> SELECT 'abcde' REGEXP 'a[bcd]{2}e';
              -> 0

 mysql> SELECT 'abcde' REGEXP 'a[bcd]{3}e';
              -> 1

 mysql> SELECT 'abcde' REGEXP 'a[bcd]{1,10}e';
              -> 1

 mysql> SELECT 'aXbc' REGEXP '[a-dXYZ]';
                 -> 1

 mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]$';
                 -> 0

 mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';
                 -> 1

 mysql> SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$';
                 -> 0

 mysql> SELECT 'gheis' REGEXP '^[^a-dXYZ]+$';
                 -> 1

 mysql> SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$';
                 -> 0

좀더 많은 자료가 필요하다면 http://www.regexlib.com/ 에서 구할 수 있습니다.

대문자 불러오기 

SELECT * FROM member WHERE BINARY(email) REGEXP '^[A-Z]' LIMIT 100;

소문자 불러오기

SELECT * FROM member WHERE BINARY(email) REGEXP '^[a-z]' LIMIT 100;

대소문자 모두 포함된 데이터 불러오기

SELECT * FROM member WHERE BINARY(email) REGEXP '^[a-Z]' LIMIT 100;

MariaDB/MySQL  정규표현식 (Regular Expression)

MySQL REGEXP 대소문자 - MySQL REGEXP daesomunja

정규표현식 (Regular Expression) ?

  • 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다.
  • 문자열을 처리하는 방법 중의 하나로, 특정한 조건의 문자를 ‘검색’하거나 ‘치환’하는 과정을 매우 간편하게 처리할 수 있도록 해주는 수단이다.
  • 정규 표현식은 SQL부터 스크립트 언어까지 다양한 곳에서 활용할 수 있다.

< Pattern 설명  >

Matching

. 문자 하나
I   (수직선) = OR.  I(수직선)로 구분된 문자에 해당하는 문자열을 찾음.
[] [] 안에 나열된 패턴에 해당하는 문자열을 찾음.
^ 시작하는 문자열을 찾음.
$ 끝나는 문자열을 찾음.
"..." 문자열의 길이가 세 글자 이상인 것을 찾음.
"데이터I(수직선)데이타" ‘데이터’ 또는 ‘데이타’에 해당하는 문자열을 찾음.
"[123]d" 대상 문자열에서 ‘1d’ 또는 ‘2d’ 또는 ‘3d’인 문자열을 찾음.
"^안녕" 대상 문자열에서 ‘안녕’으로 시작하는 문자열을 찾음.
"잘가$" 대상 문자열에서 ‘잘가’로 끝나는 문자열을 찾음.

Numbers Limit

* 0회 이상 나타나는 문자
+ 1회 이상 나타나는 문자
{m,n} m회 이상 n회 이하 반복되는 문자
? 0~1회 나타나는 문자
"a*" ‘a’가 0번 이상 등장하는 문자열을 찾음. ‘b’, ‘a’, ‘aa’ 모두 해당.
"국+" ‘국’이 1번 이상 등장하는 문자열을 찾음. ‘한국’, ‘미역국’, ‘국거리’ 모두 해당.
"치{1,2}" ‘가’ 또는 ‘나’ 또는 ‘다’가 0~1회 등장하는 문자열을 찾음. ‘가지마’, ‘나라’, ‘안녕’ 모두 해당.

String Group

[A-z] 또는 [:alpha:] 또는 \a 알파벳 대문자 또는 소문자인 문자열을 찾음
[0-9] 또는 [:digit:] 또는 \d 숫자인 문자열을 찾음
"[A-z]+" 대상 문자열에서 알파벳이 한 개 이상인 문자열을 찾음
"^[0-9]+" 한 개 이상의 숫자로 시작하는 문자열을 찾음

Not

[^문자] 괄호 안의 문자를 포함하지 않은문자열을 찾음
"[^길로그]" ‘길’ 또는 ‘로’ 또는 ‘그’를 포함하지 않는 문자열을 찾음. ‘길가’, ‘로그’, ‘그리고’ 모두 제외됨.