CONCAT_WS(Transact-SQL)

적용 대상: SQL Server 2017(14.x) 이상 Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

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

구문

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

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

‘구분 기호’ 모든 문자 형식의 식(char, nchar, nvarchar 또는 varchar).

‘인수1, 인수2, 인수N’ 모든 형식의 식. CONCAT_WS 함수에는 2개 이상, 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 값을 무시합니다. ISNULL 함수를 사용하여 Null 허용 열을 래핑하고, 기본값을 제공합니다. 자세한 내용은 이 예제를 참조하세요.

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

참고 항목

CONCAT(Transact-SQL)
FORMATMESSAGE(Transact-SQL)
QUOTENAME(Transact-SQL)
REPLACE(Transact-SQL)
REVERSE(Transact-SQL)
STRING_AGG(Transact-SQL)
STRING_ESCAPE(Transact-SQL)
STUFF(Transact-SQL)
TRANSLATE(Transact-SQL)
문자열 함수(Transact-SQL)