MySQL에서 특정 문자로 시작하는 열만 골라내고 싶다면 LIKE 연산자를 사용하면 됩니다. 또한 조회한 열 이름들을 하나의 문자열로 이어 붙일 때는 GROUP_CONCAT() 함수를 활용합니다. 기본 문법은 다음과 같습니다.
SELECT group_concat(COLUMN_NAME separator ' , ') FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = "yourTableName" AND table_schema = "yourDatabaseName" AND column_name LIKE "yourSpecificLetter%";
각 부분의 역할은 다음과 같습니다.
- INFORMATION_SCHEMA.COLUMNS: 데이터베이스에 있는 모든 테이블의 열(컬럼) 정보를 담고 있는 시스템 뷰입니다.
- column_name LIKE 'Cl%': 'Cl'로 시작하는 열 이름만 필터링합니다. %는 임의의 문자열을 의미하는 와일드카드입니다.
- GROUP_CONCAT(separator ' , '): 여러 개의 열 이름을 지정한 구분자(' , ')로 연결해 하나의 문자열로 반환합니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable671(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientAge int,
ClientAddress varchar(200),
ClientCountryName varchar(100)
);
Query OK, 0 rows affected (0.62 sec)생성된 테이블에는 ClientId, ClientName, ClientAge, ClientAddress, ClientCountryName처럼 'Cl'로 시작하는 열들이 포함되어 있습니다.
2. 특정 문자로 시작하는 열 이름 조회 후 연결하기
다음 쿼리는 'Cl'로 시작하는 열을 찾아, 해당 열 이름들을 쉼표로 구분된 하나의 문자열로 반환합니다.
mysql> SELECT group_concat(COLUMN_NAME separator ' , ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = "DemoTable671"
AND table_schema = "web"
AND column_name LIKE "Cl%";쿼리를 실행하면 아래와 같은 결과가 출력됩니다.
+-----------------------------------------------------------------------+ | group_concat(COLUMN_NAME separator ' , ') | +-----------------------------------------------------------------------+ | ClientId , ClientName , ClientAge , ClientAddress , ClientCountryName | +-----------------------------------------------------------------------+ 1 row in set (0.00 sec)
3. 핵심 정리
- LIKE '문자%' 조건을 사용하면 원하는 문자로 시작하는 열만 손쉽게 필터링할 수 있습니다.
- GROUP_CONCAT()의 separator 옵션을 바꾸면 구분자를 자유롭게 지정할 수 있습니다(예: ', ', '|' 등).
- table_schema 조건을 반드시 지정해야 데이터베이스 전체가 아닌 대상 테이블의 열만 정확하게 조회됩니다.