SQL 정규표현식 사용하기

해커랭크에서 HackerRank: Weather Observation Station 6 문제를 풀다가 정규표현식을 어떻게 사용하는지 찾아보았다.

해당 문제는 모음으로 시작하는 CITY 이름(중복 없이)을 찾아야한다.

나는 처음에 다음과 같이 문제를 풀었다.

SELECT DISTINCT(CITY)
FROM STATION
WHERE CITY LIKE 'A%' OR 'E%' OR 'I%' OR 'O%' OR 'U%'; 

하지만 위의 풀이는 틀린 풀이였고, 어떻게 하면 모음으로 시작 하는 CITY 를 찾을 수 있을지 고민했다.

(알고보니까 LIKE 를 여러개 나열하려면 OR CITY LIKE 를 계속 써줬어야 했다.
SQL 공부 갈길이 멀다!!)

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_LIKE 를 사용해서 SQL 에서 정규표현식을 사용하면 된다.
REGEXP_LIKE 는 다중 LIKE 상황을 간단하게 줄여준다.

우선 답은 다음과 같다.

SELECT DISTINCT(CITY)
FROM STATION
WHERE REGEXP_LIKE(CITY, '^A|^E|^I|^O|^U');

^는 시작을 의미하고, $는 끝을 의미한다.
따라서 ^AA로 시작하는을 의미한다.
(A로 끝나는 컬럼을 찾고 싶다면 A$ 이렇게 쓰면된다.)

좋은 웹페이지 즐겨찾기