MySQL에서 특정 단어 뒤에 대문자가 이어지는 이름을 가진 데이터베이스를 모두 조회해야 하는 경우가 있습니다. 이럴 때는 정규 표현식(REGEXP)을 활용하면 간단하게 해결할 수 있습니다.
기본 문법
information_schema의 schemata 테이블과 REGEXP 조건을 조합하여 사용합니다. 기본 문법은 다음과 같습니다.
select * from information_schema.schemata WHERE SCHEMA_NAME REGEXP '^yourValue_+[A-Z]';
- ^yourValue_+ : 지정한 단어로 시작하고 그 뒤에 언더스코어(_)가 하나 이상 있는지 확인합니다.
- [A-Z] : 언더스코어 바로 뒤에 대문자 알파벳이 오는지 검사합니다.
테스트용 데이터베이스 생성하기
예제를 위해 'bank_' 접두사와 대문자를 포함한 데이터베이스를 몇 개 생성해 보겠습니다.
mysql> create database bank_APP1; Query OK, 1 row affected (0.00 sec) mysql> create database bank_APP2; Query OK, 1 row affected (0.00 sec) mysql> create database bank_APP3; Query OK, 1 row affected (0.00 sec)
대문자가 포함된 데이터베이스 조회 쿼리
'bank_'라는 단어 뒤에 대문자가 오는 이름을 가진 모든 데이터베이스를 조회하는 쿼리는 다음과 같습니다.
mysql> select * from information_schema.schemata
WHERE SCHEMA_NAME REGEXP '^bank_+[A-Z]';실행 결과 확인
위 쿼리를 실행하면 조건에 일치하는 데이터베이스 목록이 다음과 같이 출력됩니다.
+--------------+-------------+----------------------------+------------------------+----------+ | CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | +--------------+-------------+----------------------------+------------------------+----------+ | def | bank_app1 | utf8 | utf8_unicode_ci | NULL | | def | bank_app2 | utf8 | utf8_unicode_ci | NULL | | def | bank_app3 | utf8 | utf8_unicode_ci | NULL | +--------------+-------------+----------------------------+------------------------+----------+ 3 rows in set (0.00 sec)
결과를 보면 'bank_'로 시작하고 그 뒤에 문자가 이어지는 세 개의 데이터베이스가 모두 정상적으로 조회된 것을 확인할 수 있습니다. 참고로 운영체제나 MySQL 설정(예: lower_case_table_names)에 따라 데이터베이스 이름의 대소문자 처리 방식이 달라질 수 있으므로, 실제 환경에서는 이 부분도 함께 고려하는 것이 좋습니다.