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

MySQL에서 문자열 전체를 소문자로 변환하되 첫 글자만 대문자로 유지하는 방법

MySQL에서 저장된 이름 데이터처럼 대소문자가 뒤섞인 문자열을 정리해야 하는 경우가 자주 있습니다. 이럴 때 CONCAT, UCASE, LCASE, LEFT, SUBSTRING 함수를 조합하면 문자열 전체는 소문자로 변환하면서 첫 글자만 대문자로 유지할 수 있습니다.

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    -> (
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (1.32 sec)

샘플 데이터 삽입하기

insert 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다. 의도적으로 대소문자가 섞인 값들을 넣어 보겠습니다.

mysql> insert into DemoTable values('JOhn');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values('CHRIS');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values('DAVID');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values('RObert');
Query OK, 1 row affected (0.21 sec)

select 문으로 테이블의 모든 레코드를 조회해 봅니다.

mysql> select *from DemoTable;

출력 결과

+--------+
| Name   |
+--------+
| JOhn   |
| CHRIS  |
| DAVID  |
| RObert |
+--------+
4 rows in set (0.00 sec)

첫 글자만 대문자로 유지하며 나머지를 소문자로 변환하는 쿼리

핵심 쿼리는 다음과 같습니다. LEFT(Name, 1)로 첫 글자를 추출한 뒤 UCASE()로 대문자화하고, SUBSTRING(Name, 2)로 두 번째 글자부터 끝까지 잘라낸 후 LCASE()로 소문자화하여, 마지막에 CONCAT()으로 두 부분을 합칩니다.

mysql> update DemoTable
   -> set Name= CONCAT(UCASE(LEFT(Name, 1)), LCASE(SUBSTRING(Name, 2)));
Query OK, 4 rows affected (0.30 sec)
Rows matched: 4 Changed: 4 Warnings: 0

업데이트가 완료되었으니 테이블의 모든 레코드를 다시 한번 확인해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+--------+
| Name   |
+--------+
| John   |
| Chris  |
| David  |
| Robert |
+--------+
4 rows in set (0.00 sec)

위 출력 결과를 보면 'JOhn'은 'John'으로, 'CHRIS'는 'Chris'로, 'DAVID'는 'David'로, 'RObert'는 'Robert'로 변환된 것을 확인할 수 있습니다. 이처럼 간단한 함수 조합만으로도 대소문자 형식을 일관되게 정규화할 수 있으며, 사용자 이름이나 제품명 데이터를 정리할 때 매우 유용하게 활용됩니다.