본문 바로가기
Language/MySQL

REGEXP (정규 표현식)

by Mesut Özil 2024. 1. 2.

REGEXP(Regular Expression, 정규 표현식)

MySQL에서 REGEXP정규 표현식을 사용하여 문자열을 검색하거나 필터링하는 데 사용되는 연산자입니다.

REGEXP 연산자는 WHERE 절에서 사용되어 특정 패턴과 일치하는 문자열을 선택할 수 있습니다.

 

일반적으로 사용되는 몇 가지 정규 표현식 메타 문자는 다음과 같습니다.

 

1. '^' (문자열의 시작) / '$' (문자열의 끝)

  • '^': 문자열이 'John'으로 시작하는 을 찾기 위한 쿼리
  • '$':  문자열이 'John'으로 끝나는 행을 찾기 위한 쿼리
# ['^']
SELECT *
FROM table_name
WHERE column_name REGEXP '^John';

# ['$']
SELECT *
FROM table_name
WHERE column_name REGEXP 'John$';

 

2. '.' (임의의 문자)

  • 'J' 다음에 어떤 문자가 와도 상관없고, 그 다음에 'hn'이 오는 행을 찾기 위한 쿼리
SELECT *
FROM table_name
WHERE column_name REGEXP 'J.hn';

 

3. '*' (0회 이상의 반복)

  • 'J' 다음에 0회 이상의 'o'가 오고, 그 다음에 'n'이 오는 행을 찾기 위한 쿼리
SELECT *
FROM table_name
WHERE column_name REGEXP 'Jo*n';

 

4. '+' (1회 이상의 반복)

  • 'J' 다음에 1회 이상의 'o'가 오고, 그 다음에 'n'이 오는 행을 찾기 위한 쿼리
SELECT *
FROM table_name
WHERE column_name REGEXP 'Jo+n';

 

5. '?' (0 또는 1회의 반복)

  • 'Colo' 다음에 'u'가 0회 또는 1회 나오고, 그 다음에 'r'이 오는 행을 찾기 위한 쿼리
SELECT *
FROM table_name
WHERE column_name REGEXP 'Colou?r';

 

6. '[ ]' (문자 클래스)

  • 소문자 모음 'a', 'e', 'i', 'o', 'u' 중 하나가 포함된 행을 찾기 위한 쿼리
SELECT *
FROM table_name
WHERE column_name REGEXP '[aeiou]';

 

7. '|' (논리 OR)

  • 'apple', 'banana' 또는 'orange' 중 하나와 일치하는 행을 찾기 위한 쿼리
SELECT *
FROM table_name
WHERE column_name REGEXP 'apple|banana|orange';

 

8. '-' (문자 범위 지정)

  • 문자의 범위를 지정할 때 사용
  • '[0-9]': 숫자하나 이상 포함된 행을 찾기 위한 쿼리
  • '[a-z]': 소문자 하나 이상 포함된 행을 찾기 위한 쿼리
  • '[A-Z]': 대문자 하나 이상 포함된 행을 찾기 위한 쿼리
# [0-9]
SELECT *
FROM table_name
WHERE column_name REGEXP '[0-9]';

# [a-z]
SELECT *
FROM table_name
WHERE column_name REGEXP '[a-z]';

# [A-Z]
SELECT *
FROM table_name
WHERE column_name REGEXP '[A-Z]';

 

9. '\b' (단어의 경계)

  • 단어의 경계를 나타냅니다. '\b'는 단어의 시작이나 일치합니다.
  • '\'는 MySQL에서 이스케이프 문자로 사용되기 때문에, 정규 표현식에서는 '\' 2번 적어줘야 합니다.
SELECT *
FROM your_table
WHERE your_column REGEXP '\\bword';
# 'word'가 포함된 행을 반환

 

10. '{n}' (반복 횟수 지정)

  • {n}: 바로 앞의 문자가 n번 나타나는 행을 찾기 위한 쿼리
  • {n,}: 바로 앞의 문자가 최소 n번 이상 나타나는 행을 찾기 위한 쿼리
  • {n, m}: 바로 앞의 문자가 최소 n번, 최대 m번 나타나는 행찾기 위한 쿼리
  1. 'a{2, 4}': a2번 이상, 최대 4번 포함된 행을 찾기 위한 쿼리
  2. '^[0-9]{3}-[0-9]{4}-[0-9]{4}$': (시작)숫자 3번, 숫자 4번, 숫자 4번(끝)인 행을 찾기 위한 쿼리
     ex) 010-1234-5678
# 1
SELECT *
FROM table_name
WHERE column_name REGEXP 'a{2,4}';

# 2
SELECT *
FROM table_name
WHERE column_name REGEXP '^[0-9]{3}-[0-9]{4}-[0-9]{4}$';

 

 

 

본 게시글은 ChatGPT의 도움을 받아 작성하였습니다.

'Language > MySQL' 카테고리의 다른 글

CONCAT 함수  (0) 2024.01.05
재귀 함수  (0) 2024.01.04
DataBase (데이터베이스)  (2) 2024.01.03
SQL 집합 연산자  (0) 2023.12.29
SQL문 기본 구조  (0) 2023.12.25