MySQL에는 문자열의 첫 글자만 대문자로 변환해 주는 단일 함수가 존재하지 않습니다. 따라서 여러 함수를 중첩하여 사용해야 하며, 이 경우 UPPER(), LOWER(), SUBSTRING() 함수를 조합하면 원하는 결과를 얻을 수 있습니다.
예제 데이터 확인
먼저 'emp_tbl' 테이블에 저장된 아래 데이터를 살펴보겠습니다.
mysql> Select * from emp_tbl; +----+----------------+ | Id | Name | +----+----------------+ | 1 | rahul singh | | 2 | gaurav kumar | | 3 | yashpal sharma | | 4 | krishan kumar | | 5 | kuldeep rai | | 6 | munish nayak | +----+----------------+ 6 rows in set (0.00 sec)
위 결과 집합에서 볼 수 있듯이 이름 문자열의 첫 글자가 모두 소문자로 되어 있습니다. 이제 다음 쿼리를 사용하면 각 이름의 첫 글자를 대문자로 변환할 수 있습니다.
첫 글자를 대문자로 변환하는 쿼리
mysql> Select CONCAT(UPPER(SUBSTRING(name,1,1)),LOWER(SUBSTRING(name,2))) AS Name from emp_tbl; +----------------+ | Name | +----------------+ | Rahul singh | | Gaurav kumar | | Yashpal sharma | | Krishan kumar | | Kuldeep rai | | Munish nayak | +----------------+ 6 rows in set (0.00 sec)
쿼리 동작 원리
이 쿼리가 작동하는 방식은 다음과 같습니다.
SUBSTRING(name, 1, 1)은 문자열의 첫 번째 문자를 추출하고, UPPER()가 해당 문자를 대문자로 변환합니다. 그다음 SUBSTRING(name, 2)는 두 번째 문자부터 나머지 전체를 추출하며, LOWER()가 이 부분을 모두 소문자로 만듭니다. 마지막으로 CONCAT()이 두 결과를 하나의 문자열로 연결하여 첫 글자만 대문자인 완성된 이름을 반환합니다.
참고로 MySQL 8.0 이상 버전에서는 정규표현식 함수인 REGEXP_REPLACE()를 활용하는 방법도 있지만, 위와 같은 SUBSTRING 방식이 가장 널리 사용되며 모든 버전에서 호환됩니다.