CONCAT_WS(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL Server 2017(14.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL 분석 엔드포인트

이 함수는 둘 이상의 문자열 값을 엔드투엔드 방식으로 연결하거나 조인한 결과 문자열을 반환합니다. 연결된 문자열 값을 첫 번째 함수 인수에 지정된 구분 기호와 구분합니다. (CONCAT_WS구분 기호와의 연결을 나타냅니다.)

Syntax

CONCAT_WS ( separator , argument1 , argument2 [ , argumentN ] ... )

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

separator

문자 형식(char, nchar, nvarchar 또는 varchar)의 식입니다.

argument1, argument2 [ , argumentN ]

문자열 값의 식입니다. 함수에는 CONCAT_WS 두 개 이상의 인수가 필요하며 인수는 254개 이하입니다.

반환 형식

길이와 형식이 입력에 따라 달라지는 문자열 값입니다.

설명

CONCAT_WS는 가변 개수의 문자열 인수를 가져와서 단일 문자열로 연결(또는 조인)합니다. 연결된 문자열 값을 첫 번째 함수 인수에 지정된 구분 기호와 구분합니다. CONCAT_WS 에는 구분 기호 인수와 최소 두 개의 다른 문자열 값 인수가 필요합니다. 그렇지 않으면 CONCAT_WS 오류가 발생합니다. CONCAT_WS는 병합하기 전에 모든 인수를 문자열 형식으로 암시적으로 변환합니다.

문자열에 대한 암시적 변환은 데이터 형식 변환에 대한 기존 규칙을 따릅니다. 동작 및 데이터 형식 변환에 대한 자세한 내용은 CONCAT(Transact-SQL)를 참조하십시오.

NULL 값 처리

CONCAT_WSSET CONCAT_NULL_YIELDS_NULL { ON | OFF } 설정을 무시합니다.

CONCAT_WS 모든 NULL 값이 있는 인수를 받으면 varchar(1) 형식의 빈 문자열을 반환합니다.

CONCAT_WS 는 연결 중에 null 값을 무시하고 null 값 사이에 구분 기호를 추가하지 않습니다. 따라서 CONCAT_WS "빈" 값(예: 두 번째 주소 필드)을 가질 수 있는 문자열의 연결을 클린 처리할 수 있습니다. 자세한 내용은 예제 B를 참조하세요.

시나리오에 구분 기호로 구분된 null 값이 포함된 경우 ISNULL 함수를 고려합니다. 자세한 내용은 예제 C를 참조 하세요.

예제

A. 구분 기호를 사용하여 값 연결

다음은 테이블에서 세 개의 sys.databases 열을 연결하여 값을 공백(-)으로 묶은 하이픈으로 구분하는 예제입니다.

SELECT CONCAT_WS(' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;

결과 집합은 다음과 같습니다.

DatabaseInfo
-----------------
1 - SIMPLE - NONE
2 - SIMPLE - NONE
3 - FULL - NONE
4 - SIMPLE - NONE

B. NULL 값 건너뛰기

다음은 인수 목록의 NULL 값을 무시하고 쉼표 구분 기호 값(,)을 사용하는 예제입니다.

SELECT CONCAT_WS(',', '1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;

결과 집합은 다음과 같습니다.

Address
--------------------------------
1 Microsoft Way,Redmond,WA,98052

C. 테이블에서 CSV 형식 데이터 생성

이 예제에서는 쉼표 구분 기호 값(,)을 사용하고 결과 집합의 열로 구분된 값 형식에 캐리지 반환 문자를 CHAR(13) 추가합니다.

SELECT STRING_AGG(CONCAT_WS(',', database_id, recovery_model_desc, containment_desc), CHAR(13)) AS DatabaseInfo
FROM sys.databases;

결과 집합은 다음과 같습니다.

DatabaseInfo
-------------
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE
4,SIMPLE,NONE

CONCAT_WS 는 열의 NULL 값을 무시합니다. 함수를 사용하여 nullable 열을 ISNULL 래핑하고 기본값을 제공합니다. 예시:

SELECT STRING_AGG(
    CONCAT_WS(',', database_id, ISNULL(recovery_model_desc, ''),
    ISNULL(containment_desc, 'N/A')
    ), CHAR(13)) AS DatabaseInfo
FROM sys.databases;