MySQL에서 REPLACE() 함수를 사용하면 필드(컬럼)의 값을 그대로 가져오면서 특정 문자만 원하는 형태로 바꿀 수 있습니다. 이번 글에서는 이름 데이터에서 특정 알파벳을 대문자로 변환하는 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1897
(
Name varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable1897 values('john');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1897 values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1897 values('jace');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1897 values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1897 values('Chris');
Query OK, 1 row affected (0.00 sec)3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1897;
실행 결과는 다음과 같습니다.
+-------+ | Name | +-------+ | john | | Chris | | jace | | David | | Chris | +-------+ 5 rows in set (0.00 sec)
4. 특정 문자를 대문자로 변환하는 쿼리
다음은 필드 값을 조회하면서 소문자 'j'를 대문자 'J'로 변환하는 쿼리입니다. REPLACE() 함수는 첫 번째 인수인 대상 문자열에서 두 번째 인수로 지정한 문자를 찾아 세 번째 인수의 문자로 치환합니다.
mysql> select replace(Name,'j','J') from DemoTable1897;
실행 결과는 다음과 같습니다.
+-----------------------+ | replace(Name,'j','J') | +-----------------------+ | John | | Chris | | Jace | | David | | Chris | +-----------------------+ 5 rows in set (0.00 sec)
추가 팁
'john'과 'jace'처럼 이름 첫 글자가 소문자인 경우에도 위 쿼리를 통해 'John', 'Jace'로 정상적으로 변환되는 것을 확인할 수 있습니다. 만약 각 이름의 첫 글자를 항상 대문자로 만들고 싶다면 CONCAT(UPPER(LEFT(Name,1)), SUBSTRING(Name,2)) 조합을 사용하는 방법도 있습니다. 또한 결과에 별칭(alias)을 붙이면 출력 컬럼명을 더 읽기 쉽게 표시할 수 있습니다.
mysql> select replace(Name,'j','J') AS UpdatedName from DemoTable1897;