Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 단어 뒤에 대문자가 포함된 모든 데이터베이스 조회하는 방법

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)에 따라 데이터베이스 이름의 대소문자 처리 방식이 달라질 수 있으므로, 실제 환경에서는 이 부분도 함께 고려하는 것이 좋습니다.