• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 1. 서버에 연결 그리고 서버와 연결 끊기
    2. 쿼리 입력
    3. 데이터베이스 생성 및 사용
    1. 데이터베이스 생성 및 선택
    2. 테이블 만들기
    3. Loading Data into a Table
    4. 테이블에서 정보 검색
    1. 모든 데이터 선택
    2. 특정 행 선택
    3. 특정 컬럼의 선택
    4. 행 정렬
    5. 날짜 계산
    6. NULL 값 조작
    7. Pattern Matching
    8. Counting Rows
    9. 여러 테이블의 사용
    4. 데이터베이스 및 테이블 정보 가져 오기
    5. 배치 모드에서의 MySQL의 사용
    6. 일반적인 쿼리의 예제
    7. Apache와 MySQL 사용
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

3.3.4.7 패턴 매칭

MySQL은 표준 SQL 패턴 매칭 외에도 vi, grep, sed 등의 Unix 유틸리티에 사용되는 것과 유사한 확장 정규식 기반 패턴 매칭 형식이 제공되고 있습니다.

SQL 패턴 매칭을 사용하면 " _ "임의의 단일 문자" % "로 임의의 수의 문자 (제로 문자 포함)에 일치시킬 수 있습니다. MySQL의 기본적으로 SQL 패턴은 대소 문자를 구분하지 않습니다. 다음은 몇 가지 예입니다. SQL 패턴을 사용할 때 = 또는 <> 는 사용하지 않습니다. 대신 LIKE 또는 NOT LIKE 비교 연산자를 사용합니다.

" b "로 시작하는 이름을 찾으려면 :

 mysql> SELECT * FROM pet WHERE name LIKE 'b%';
+--------+--------+---------+------+------------+------------+
| name   | owner  | species | sex  | birth      | death      |
+--------+--------+---------+------+------------+------------+
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

' fy '로 끝나는 이름을 찾으려면 :

 mysql> SELECT * FROM pet WHERE name LIKE '%fy';
+--------+--------+---------+------+------------+-------+
| name   | owner  | species | sex  | birth      | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
+--------+--------+---------+------+------------+-------+

" w "를 포함하는 이름을 찾으려면 :

 mysql> SELECT * FROM pet WHERE name LIKE '%w%';
+----------+-------+---------+------+------------+------------+
| name     | owner | species | sex  | birth      | death      |
+----------+-------+---------+------+------------+------------+
| Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       |
| Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       |
+----------+-------+---------+------+------------+------------+

다만 5 문자의 이름을 찾으려면 " _ "패턴 문자의 5 개의 인스턴스를 사용합니다.

 mysql> SELECT * FROM pet WHERE name LIKE '_____';
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+

MySQL에서 제공되는 다른 종류의 패턴 매칭은 확장 정규 표현식을 사용합니다. 이 유형의 패턴 일치를 테스트하려면 REGEXP 연산자와 NOT REGEXP 연산자 (또는 동의어이다 RLIKE 와 NOT RLIKE )를 사용합니다.

다음 표에서는 확장 정규 표현식의 특징의 일부를 보여줍니다.

  • " . "는 단일 문자와 일치합니다.

  • 문자 클래스 " [...] "는 괄호 안의 문자 중 하나와 일치합니다. 예를 들어, " [abc] "는" a "," b "또는" c "와 일치합니다. 문자의 범위를 지정하려면 대시를 사용합니다. " [az] "는 임의의 문자와 일치합니다" [0-9] "는 임의의 숫자와 일치합니다.

  • " * "는 이전 문자의 0 개 이상의 인스턴스와 일치합니다. 예를 들어, " x* '는 임의의 숫자 " x "문자와 일치합니다" [0-9]* '는 임의 개수의 숫자와 일치 " .* "는 임의의 수의 문자로 일치합니다.

  • REGEXP 패턴 매칭은 테스트 값의 어떤 부분에 패턴이 일치하면 성공입니다. (이와 달리 LIKE 패턴 매칭은 패턴이 전체 값과 일치하는 경우에만 성공합니다.)

  • 테스트 값의 시작 또는 끝 부분에 패턴이 일치하도록 지정하려면 패턴의 맨 위에 " ^ "또는 패턴의 끝에" $ "를 사용합니다.

확장 정규 표현식이 어떻게 동작하는지 확인하기 위해 앞의 LIKE 쿼리를 REGEXP 에서 재작 성을 보여줍니다.

" b "로 시작하는 이름을 찾으려면" ^ "를 사용하여 이름 앞에 일치하도록 지정합니다.

 mysql> SELECT * FROM pet WHERE name REGEXP '^b';
+--------+--------+---------+------+------------+------------+
| name   | owner  | species | sex  | birth      | death      |
+--------+--------+---------+------+------------+------------+
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

REGEXP 비교에서 대문자와 소문자를 구별하려면 BINARY 키워드를 사용하여 문자열 중 하나를 이진 문자열합니다. 다음 쿼리는 이름 앞에있는 소문자 " b "만큼 일치합니다.

 mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';

' fy '로 끝나는 이름을 찾으려면 " $ "를 사용하여 이름 끝에 일치하도록 지정합니다.

mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';
+--------+--------+---------+------+------------+-------+
| name   | owner  | species | sex  | birth      | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
+--------+--------+---------+------+------------+-------+

" w "를 포함하는 이름을 찾으려면 다음 쿼리를 사용합니다.

 mysql> SELECT * FROM pet WHERE name REGEXP 'w';
+----------+-------+---------+------+------------+------------+
| name     | owner | species | sex  | birth      | death      |
+----------+-------+---------+------+------------+------------+
| Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       |
| Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       |
+----------+-------+---------+------+------------+------------+

정규 표현식 패턴은 값의 어떤 부분에 찾으면 일치하기 때문에이 쿼리는 SQL 패턴을 사용하는 경우처럼 패턴의 양쪽에 와일드 카드를 추가하여 패턴을 전체 값과 일치시킬 필요는 없습니다 .

다만 5 문자의 이름을 찾으려면 " ^ "와" $ "를 사용하여 이름의 시작과 끝이 일치하도록 지정하고 사이에" . "를 5 개 사용합니다.

mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+

이 쿼리는 { n } ( " n 번 반복 ") 연산자를 사용하여 설명 할 수 있습니다.

 mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+

섹션 12.5.2 "정규 표현식" 에서 정규 표현식 구문에 대해 자세히 설명하고 있습니다.

서울시 강남구 영동대로 602 6층  TEL: 02-6061-0006
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved