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

MySQL CONCAT 함수로 열의 기존 값에 문자열 추가하는 방법

데이터베이스 작업 중에는 특정 열의 기존 값 뒤에 새로운 내용을 덧붙여야 하는 경우가 자주 발생합니다. MySQL에서는 CONCAT 함수UPDATE 문을 함께 사용하면 이러한 작업을 간단하게 처리할 수 있습니다.

개념을 확실히 이해하기 위해 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 데모 테이블 생성

먼저 강사 정보를 저장할 데모 테이블을 생성합니다.

mysql> create table addToExistingValueDemo
    -> (
    -> Instructor_Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Instructor_Name varchar(30),
    -> Instructor_TechnicalSubject text
    -> );
Query OK, 0 rows affected (0.54 sec)

2단계: 샘플 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다. 쿼리는 다음과 같습니다.

mysql> insert into addToExistingValueDemo(Instructor_Name,Instructor_TechnicalSubject) values('John','C,C++');
Query OK, 1 row affected (0.15 sec)
mysql> insert into addToExistingValueDemo(Instructor_Name,Instructor_TechnicalSubject) values('Carol','Java,Python');
Query OK, 1 row affected (0.18 sec)
mysql> insert into addToExistingValueDemo(Instructor_Name,Instructor_TechnicalSubject) values('Bob','MySQL,SQL Server');
Query OK, 1 row affected (0.15 sec)
mysql> insert into addToExistingValueDemo(Instructor_Name,Instructor_TechnicalSubject) values('David','DataStructure');
Query OK, 1 row affected (0.18 sec)

3단계: 데이터 조회

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from addToExistingValueDemo;

다음은 출력 결과입니다.

+---------------+-----------------+-----------------------------+
| Instructor_Id | Instructor_Name | Instructor_TechnicalSubject |
+---------------+-----------------+-----------------------------+
|             1 | John            | C,C++                       |
|             2 | Carol           | Java,Python                 |
|             3 | Bob             | MySQL,SQL Server            |
|             4 | David           | DataStructure               |
+---------------+-----------------+-----------------------------+
4 rows in set (0.00 sec)

4단계: CONCAT 함수로 기존 값에 새 값 추가

이제 CONCAT 함수를 사용하여 특정 행의 기존 값 뒤에 새로운 문자열을 추가해 보겠습니다. 여기서는 Instructor_Id가 4인 David의 전문 과목 목록에 'Introduction To Algorithm'을 덧붙입니다.

mysql> update addToExistingValueDemo
    -> set Instructor_TechnicalSubject=concat(Instructor_TechnicalSubject,', Introduction To Algorithm')
    -> where Instructor_Id=4;
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0

핵심은 concat(열이름, '추가할 문자열') 형태로 기존 열 값을 그대로 인자로 넘기고, 구분자(콤마)와 함께 새 값을 연결한다는 점입니다.

5단계: 변경 결과 확인

변경 사항이 제대로 반영되었는지 테이블을 다시 조회해 보겠습니다.

mysql> select *from addToExistingValueDemo;

다음은 출력 결과입니다.

+---------------+-----------------+------------------------------------------+
| Instructor_Id | Instructor_Name | Instructor_TechnicalSubject              |
+---------------+-----------------+------------------------------------------+
|             1 | John            | C,C++                                    |
|             2 | Carol           | Java,Python                              |
|             3 | Bob             | MySQL,SQL Server                         |
|             4 | David           | DataStructure, Introduction To Algorithm |
+---------------+-----------------+------------------------------------------+
4 rows in set (0.00 sec)

Instructor_Id가 4인 행의 값이 'DataStructure'에서 'DataStructure, Introduction To Algorithm'으로 성공적으로 변경된 것을 확인할 수 있습니다.

참고: NULL 값 처리 주의사항

CONCAT 함수 사용 시 한 가지 주의할 점이 있습니다. 대상 열의 값이 NULL이면 CONCAT의 결과도 NULL이 되어 아무것도 추가되지 않습니다. 이 경우에는 CONCAT_WS 함수나 IFNULL 함수를 함께 사용하면 안전하게 처리할 수 있습니다.

mysql> update addToExistingValueDemo
    -> set Instructor_TechnicalSubject=concat(ifnull(Instructor_TechnicalSubject,''), ', Introduction To Algorithm')
    -> where Instructor_Id=4;

이처럼 CONCAT 함수와 UPDATE 문을 조합하면 별도의 애플리케이션 로직 없이도 SQL만으로 기존 데이터에 손쉽게 새로운 값을 추가할 수 있습니다.