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

MySQL에서 열 이름 길이가 5자보다 긴 모든 열 조회하는 방법

MySQL에서 열 이름 길이가 5자보다 긴 열 찾기

데이터베이스의 네이밍 규칙을 점검하거나 스키마를 정리할 때, "열(컬럼) 이름이 일정 길이 이상인 것만 골라내야 하는" 경우가 종종 있습니다. MySQL에서는 INFORMATION_SCHEMA.COLUMNS 테이블과 HAVING 절을 조합하면 이런 작업을 SQL 한 문장으로 간단히 처리할 수 있습니다.

1. 기본 원리: INFORMATION_SCHEMA.COLUMNS

MySQL은 테이블 구조와 같은 메타데이터를 INFORMATION_SCHEMA라는 가상 데이터베이스에 보관합니다. 그중 COLUMNS 테이블에는 서버 내 모든 테이블의 열 정보(TABLE_NAME, COLUMN_NAME, DATA_TYPE 등)가 담겨 있으므로, 여기에 길이 조건을 적용하면 원하는 결과를 얻을 수 있습니다.

2. HAVING 절을 사용한 쿼리

SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
HAVING LENGTH(COLUMN_NAME) > 5;

LENGTH() 함수가 열 이름의 길이를 계산하고, HAVING 절이 그 값이 5보다 큰 행만 걸러냅니다. MySQL에서는 GROUP BY 없이도 HAVING을 사용할 수 있기 때문에 이런 형태의 필터링이 가능합니다.

3. 실행 결과 예시

실제로 위 쿼리를 실행하면 다음과 같은 형태의 결과가 출력됩니다. 아래는 전체 55행 중 일부 발췌본입니다.

+-------------------+-------------------------+
| TABLE_NAME        | COLUMN_NAME             |
+-------------------+-------------------------+
| DemoTable         | UserId                  |
| DemoTable         | EndDate                 |
| DemoTable         | StartDate               |
| DemoTable         | StudentFavouriteSubject |
| DemoTable         | StudentFirstName        |
| DemoTable         | StudentId               |
| DemoTable         | ShippingDate            |
| DemoTable         | ArrivalDate             |
| DemoTable         | CustomerAllProductPrice |
| DemoTable         | StudentCountryName      |
| insertcurrentdate | currentDate             |
| student           | first_name              |
| student           | last_name               |
+-------------------+-------------------------+
55 rows in set (0.01 sec)

4. 실무에서 알아두면 좋은 팁

  • 특정 데이터베이스로 범위 제한: 서버 전체가 아니라 특정 DB만 검색하려면 WHERE TABLE_SCHEMA = '데이터베이스명' 조건을 추가하세요.
  • WHERE 절 사용도 가능: 집계가 필요 없는 단순 필터링이라면 WHERE CHAR_LENGTH(COLUMN_NAME) > 5처럼 WHERE 절을 쓰는 것이 표준적이며 성능 면에서도 더 유리합니다.
  • LENGTH() vs CHAR_LENGTH(): LENGTH()는 바이트 수를 반환합니다. 따라서 한글처럼 멀티바이트 문자가 포함된 열 이름을 다룬다면 문자 수를 세는 CHAR_LENGTH()를 사용하는 것이 안전합니다.

마무리

INFORMATION_SCHEMA.COLUMNS를 조회하면 별도의 관리 도구 없이 SQL 한 문장으로 스키마 전체의 열 이름을 분석할 수 있습니다. 네이밍 규칙 점검이나 리팩토링 대상 선정 등에 적극적으로 활용해 보세요.