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
'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 |