본문 바로가기
SQL

Mysql 정규식

by rubyda 2021. 10. 21.
728x90

Mysql에서 쿼리를 작성할때 LIKE를 써서 원하는 패턴을 매칭할 수 있다. 예를들면 다음과 같다.

SELECT 
    DISTINCT city 
FROM station
WHERE 
    city LIKE "a%"

다음은 a로 시작하는 도시를 매칭하게 된다. 그런데 만약 매칭하고 싶은 패턴이 여러가지면?? 

a,e,i,o,u로 시작하는 도시를 가져오고 싶다고 해보자.

SELECT 
    DISTINCT city 
FROM station
WHERE 
    city LIKE "a%" 
    OR city LIKE "e%" 
    OR city LIKE "i%" 
    OR city LIKE "o%" 
    OR city LIKE "u%"

처음에는 다음과 같이 쿼리를 작성했다. 그런데 뭔가 분명히 간단한 방법이 있을것 같아 찾아보지 REGEXP를 알게되었다.

 

REGEXP란?

: like 검색과는 달리 정규식을 이용한 검색 방식을 말한다.

 

. : 문자 하나
* : 앞에 나온 문자의 0개 이상 반복
^ : 문자열의 처음
$ : 문자열의 끝
[.] : 괄호 안의 문자열 일치
{.} : 반복
| : or 

 

많이 사용하는 기능은 다음과 같고 여기에서 많은 기능을 볼 수 있다.

 

위에 복잡한 쿼리를 정규식으로 간단하게 작성해보자.

SELECT 
    DISTINCT city 
FROM station 
WHERE 
    city 
    REGEXP '^[aeiou]'

 

다음과 같다. 괄호 안의 매칭하고 싶은 문자열을 넣고 ^는 문자열의 처음이라는 뜻이다.

 

 

 

 

https://dev.mysql.com/doc/refman/8.0/en/regexp.html

 

MySQL :: MySQL 8.0 Reference Manual :: 12.8.2 Regular Expressions

12.8.2 Regular Expressions Table 12.14 Regular Expression Functions and Operators Name Description NOT REGEXP Negation of REGEXP REGEXP Whether string matches regular expression REGEXP_INSTR() Starting index of substring matching regular expression REGE

dev.mysql.com

 

'SQL' 카테고리의 다른 글

[HackerRank] Weather Observation Station 11  (0) 2021.10.22
SQL 작성 팁  (0) 2021.10.18
MYSQL 테이블 구조 수정  (0) 2021.08.04
MYSQL 테이블 생성  (0) 2021.08.04
MYSQL 데이터 타입  (0) 2021.08.04