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

MySQL에서 CONCAT()의 대안은 무엇일까요? CONCAT_WS() 함수 완벽 가이드

네, MySQL에서 CONCAT() 함수의 대안으로 CONCAT_WS() 함수를 사용할 수 있습니다. CONCAT_WS는 'Concatenate With Separator(구분자를 사용한 문자열 연결)'의 약자로, 첫 번째 인수에 지정한 구분자를 기준으로 여러 문자열을 하나로 합쳐 줍니다.

CONCAT_WS()의 가장 큰 장점은 NULL 처리 방식입니다. 일반 CONCAT() 함수는 인수 중 하나라도 NULL이면 전체 결과가 NULL로 반환되지만, CONCAT_WS()는 NULL 값을 자동으로 건너뛰고 나머지 문자열을 정상적으로 연결해 줍니다.

그럼 먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(100)
    );
Query OK, 0 rows affected (0.74 sec)

예제

insert 명령을 사용하여 테이블에 학생 레코드를 삽입합니다.

mysql> insert into DemoTable(StudentName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentName) values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('Bob');
Query OK, 1 row affected (0.12 sec)

select 문을 사용하여 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Chris       |
| 2         | Robert      |
| 3         | Bob         |
+-----------+-------------+
3 rows in set (0.00 sec)

CONCAT_WS() 함수 활용하기

이제 MySQL에서 CONCAT()의 대안인 CONCAT_WS()를 실제로 사용하는 방법을 살펴보겠습니다. 아래 쿼리에서는 SPACE(2)를 구분자로 지정하여 연결되는 문자열 사이에 공백 두 칸을 자동으로 삽입합니다.

mysql> select concat_ws(SPACE(2), 'Student Name is:',StudentName) from DemoTable;

출력 결과

+-----------------------------------------------------+
| concat_ws(SPACE(2), 'Student Name is:',StudentName) |
+-----------------------------------------------------+
| Student Name is: Chris                              |
| Student Name is: Robert                             |
| Student Name is: Bob                                |
+-----------------------------------------------------+
3 rows in set (0.04 sec)

실행 결과를 보면 각 행마다 'Student Name is:'라는 접두사와 학생 이름이 공백 두 칸을 사이에 두고 깔끔하게 연결된 것을 확인할 수 있습니다. 이처럼 CONCAT_WS()는 구분자를 한 번만 지정하면 되기 때문에, 여러 문자열을 연결할 때 CONCAT()보다 코드가 더 간결하고 가독성이 좋다는 장점도 있습니다.