정규식을 통해 쿼리문을 간단하게 짜는방법
문제)
Query the list of CITY names from STATION which have vowels (i.e., a, e, i, o, and u) as both their first and last characters. Your result cannot contain duplicates.
Field | Type |
---|---|
ID | NUMBER |
CITY | VARCHAR2(21) |
STATE | VARCHAR2(2) |
LAT_N | NUMBER |
LONG_W | NUMBER |
핵랭 문제8번
나의 첫 풀이방법
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%')
AND (City LIKE '%a' OR City LIKE '%e' OR City LIKE '%i' OR City LIKE '%o' OR City LIKE '%u');
위와 같은 방법으로 노가다를 했지만, 파이썬의 정규식이 나서 찾아보았고 SQL에서도 정규식 방법을 찾아본후 적용한 답안이 아래의 코드입니다.
SELECT CITY FROM STATION
WHERE CITY REGEXP '^[AEIOU]' AND CITY REGEXP '[aeiou]$';
위와같이 정규식으로 훨씬 간단하게 풀 수 있다.
만약에 포함하지 않는다는것을 쓰고싶을때는 '[^AEIOU]' 를 사용해주면 된다.
하지만, 만약 시작을 모음으로 포함하지 않을경우 라면 '^[^AEIOU]'라고 해주어야한다.
그렇다면 끝을 모음으로 하지 않을경우는 '[^AEIOU]$' 이렇게 하면 됩니다.
SQL도 정규식을 잘 활용해보자!