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

MySQL에서 문자열을 변수에 저장하고 연결해 단일 열로 표시하는 방법

MySQL에서 여러 문자열을 변수에 저장한 뒤 이를 연결하여 하나의 열에 표시하려면 CONCAT_WS() 함수를 사용하면 됩니다. CONCAT_WS()는 'Concatenate With Separator'의 약자로, 지정한 구분자를 기준으로 여러 문자열을 하나로 합쳐주는 매우 유용한 함수입니다.

1단계: 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. 클라이언트의 고유 ID, 이름(First Name), 성(Last Name)을 저장하는 구조입니다.

mysql> create table DemoTable1433
    -> (
    -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientFirstName varchar(20),
    -> ClientLastName varchar(20)
    -> );
Query OK, 0 rows affected (0.58 sec)

2단계: 데이터 삽입하기

INSERT 문을 사용해 테이블에 샘플 레코드를 추가합니다.

mysql> insert into DemoTable1433(ClientFirstName,ClientLastName) values('David','Miller');
Query OK, 1 row affected (0.14 sec)

3단계: 저장된 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 데이터가 정상적으로 입력되었는지 확인합니다.

mysql> select * from DemoTable1433;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+----------+-----------------+----------------+
| ClientId | ClientFirstName | ClientLastName |
+----------+-----------------+----------------+
|        1 | David           | Miller         |
+----------+-----------------+----------------+
1 row in set (0.00 sec)

4단계: 변수에 문자열을 저장하고 연결하기

이제 CONCAT_WS() 함수를 활용해 이름과 성을 하이픈(-) 구분자로 연결한 결과를 사용자 정의 변수(@concat_variable)에 저장합니다. SELECT 서브쿼리의 결과를 SET 문으로 변수에 할당하는 방식입니다.

mysql> set @concat_variable:=(select concat_ws('-',ClientFirstName,ClientLastName) from DemoTable1433);
Query OK, 0 rows affected (0.00 sec)

변수에 저장된 값을 조회하려면 다음과 같이 SELECT 문을 실행합니다.

mysql> select @concat_variable;

실행 결과, 두 문자열이 구분자와 함께 하나의 값으로 연결되어 출력되는 것을 확인할 수 있습니다.

+------------------+
| @concat_variable |
+------------------+
| David-Miller    |
+------------------+
1 row in set (0.00 sec)

정리

이처럼 MySQL에서는 CONCAT_WS() 함수와 사용자 정의 변수를 조합하면 여러 개의 문자열을 손쉽게 하나의 값으로 연결할 수 있습니다. 첫 번째 인자로 넣은 구분자(-)가 각 문자열 사이에 자동으로 삽입되므로, 전화번호나 주소처럼 특정 형식으로 데이터를 조합해야 할 때 특히 유용합니다. 참고로 CONCAT_WS()는 NULL 값이 포함된 경우 해당 값을 건너뛰고 나머지 문자열만 연결한다는 점도 기억해두면 좋습니다.