MySQL에서 한 열의 값에서 첫 글자만 추출하여 다른 열에 넣고 싶다면 LEFT() 함수를 활용하면 됩니다. LEFT() 함수는 문자열의 왼쪽부터 지정한 개수만큼의 문자를 반환하는 함수로, 첫 글자 하나만 가져올 때 매우 유용합니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다. 첫 글자를 저장할 FirstLetter 열과 원본 문자열을 담을 Title 열로 구성합니다.
mysql> create table DemoTable2036
-> (
-> FirstLetter varchar(20),
-> Title varchar(20)
-> );
Query OK, 0 rows affected (1.01 sec)
2. 데이터 삽입하기
INSERT 명령어를 사용하여 몇 개의 레코드를 추가합니다. 이때 Title 열에만 값을 넣고 FirstLetter 열은 비워둡니다.
mysql> insert into DemoTable2036(Title) values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable2036(Title) values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable2036(Title) values('Adam');
Query OK, 1 row affected (0.15 sec)3. 현재 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable2036;
실행 결과는 다음과 같습니다. 아직 FirstLetter 열에는 값이 없으므로 NULL로 표시됩니다.
+-------------+-------+
| FirstLetter | Title |
+-------------+-------+
| NULL | Chris |
| NULL | John |
| NULL | Adam |
+-------------+-------+
3 rows in set (0.00 sec)
4. UPDATE와 LEFT() 함수로 첫 글자 채우기
이제 핵심 단계입니다. UPDATE 문과 함께 left(Title, 1)을 사용하면 Title 열 값의 첫 번째 문자를 추출하여 FirstLetter 열에 저장할 수 있습니다.
mysql> update DemoTable2036
-> set FirstLetter=left(Title,1);
Query OK, 3 rows affected (0.23 sec)
Rows matched: 3 Changed: 3 Warnings: 0
5. 결과 확인하기
업데이트 후 테이블을 다시 조회해 보면 각 이름의 첫 글자가 정상적으로 저장된 것을 확인할 수 있습니다.
mysql> select *from DemoTable2036;
+-------------+-------+
| FirstLetter | Title |
+-------------+-------+
| C | Chris |
| J | John |
| A | Adam |
+-------------+-------+
3 rows in set (0.00 sec)
추가 팁
특정 조건에 해당하는 행만 업데이트하고 싶다면 WHERE 절을 함께 사용하면 됩니다. 예를 들어 다음과 같이 작성할 수 있습니다.
update DemoTable2036
set FirstLetter = left(Title, 1)
where FirstLetter IS NULL;
또한 INSERT 시점부터 첫 글자를 함께 저장하고 싶다면 아래처럼 VALUES 절에서 직접 LEFT() 함수를 사용할 수도 있습니다.
insert into DemoTable2036(FirstLetter, Title)
values(left('David', 1), 'David');
이처럼 MySQL의 LEFT() 함수를 활용하면 별도의 애플리케이션 로직 없이 SQL문만으로 문자열의 일부를 손쉽게 추출하여 다른 열에 저장할 수 있습니다.