MySQL에서 모음(A, E, I, O, U)으로 시작하지 않는 도시 이름 목록을 조회하려면 DISTINCT 키워드와 RLIKE 연산자를 함께 사용하면 됩니다. RLIKE는 정규 표현식 기반의 패턴 매칭 연산자로, 도시 이름의 첫 글자가 모음인지 아닌지를 손쉽게 판별할 수 있습니다.
기본 문법
모음으로 시작하지 않는 도시 이름을 조회하는 기본 문법은 다음과 같습니다.
SELECT DISTINCT yourCityColumnName FROM yourTableName WHERE yourCityColumnName NOT RLIKE '^[AEIOUaeiou].*$';
정규 표현식 ^[AEIOUaeiou].*$는 문자열이 대문자 또는 소문자 모음으로 시작하는 경우를 의미하며, 앞에 NOT을 붙이면 그 반대 조건, 즉 모음으로 시작하지 않는 행만 반환됩니다.
예제 테이블 생성
문법을 실제로 이해하기 위해 도시 이름 컬럼을 포함한 테이블을 먼저 만들어 보겠습니다.
mysql> create table Employee_Information -> ( -> Id int NOT NULL AUTO_INCREMENT, -> EmployeeName varchar(20), -> CityName varchar(20), -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.76 sec)
샘플 데이터 입력
INSERT 명령어를 사용해 직원 정보와 도시 이름 데이터를 입력합니다.
mysql> insert into Employee_Information(EmployeeName,CityName) values('Larry','New York'); mysql> insert into Employee_Information(EmployeeName,CityName) values('Sam','Indianapolis'); mysql> insert into Employee_Information(EmployeeName,CityName) values('Carol','El Paso'); mysql> insert into Employee_Information(EmployeeName,CityName) values('John','Austin'); mysql> insert into Employee_Information(EmployeeName,CityName) values('Mike','Denver'); mysql> insert into Employee_Information(EmployeeName,CityName) values('David','Las Vegas'); mysql> insert into Employee_Information(EmployeeName,CityName) values('James','Albuquerque'); mysql> insert into Employee_Information(EmployeeName,CityName) values('Robert','Portland'); mysql> insert into Employee_Information(EmployeeName,CityName) values('Richard','Irvine'); mysql> insert into Employee_Information(EmployeeName,CityName) values('Michael','Garland');입력된 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from Employee_Information;
실행 결과는 다음과 같습니다.
+----+--------------+--------------+ | Id | EmployeeName | CityName | +----+--------------+--------------+ | 1 | Larry | New York | | 2 | Sam | Indianapolis | | 3 | Carol | El Paso | | 4 | John | Austin | | 5 | Mike | Denver | | 6 | David | Las Vegas | | 7 | James | Albuquerque | | 8 | Robert | Portland | | 9 | Richard | Irvine | | 10 | Michael | Garland | +----+--------------+--------------+ 10 rows in set (0.00 sec)
모음으로 시작하지 않는 도시 이름 조회 쿼리
이제 본론입니다. 도시 이름의 첫 글자가 A, E, I, O, U 또는 a, e, i, o, u로 시작하지 않는 레코드만 조회하는 쿼리는 다음과 같습니다.
mysql> SELECT DISTINCT CityName FROM Employee_Information -> WHERE CityName NOT RLIKE '^[AEIOUaeiou].*$';
실행 결과는 다음과 같습니다.
+-----------+ | CityName | +-----------+ | New York | | Denver | | Las Vegas | | Portland | | Garland | +-----------+ 5 rows in set (0.00 sec)
결과 분석
위 결과에서 New York(N), Denver(D), Las Vegas(L), Portland(P), Garland(G)처럼 첫 글자가 자음인 도시 이름만 출력된 것을 확인할 수 있습니다. 반면 Indianapolis(I), El Paso(E), Austin(A), Albuquerque(A), Irvine(I)처럼 모음으로 시작하는 도시 이름은 정규 표현식 조건에 걸려 제외되었습니다.
추가 팁
대소문자 구분 없이 처리하고 싶다면 정규 표현식에 대문자와 소문자를 모두 포함하는 것이 안전합니다. 또한 MySQL 8.0 이상에서는 REGEXP_LIKE(CityName, '^[AEIOUaeiou]') 함수를 사용해 동일한 결과를 얻을 수 있으며, 가독성 측면에서 더 직관적일 수 있습니다. 중복 제거가 필요 없다면 DISTINCT를 생략해도 무방합니다.