CONCAT(Transact-SQL)

적용 대상:yesSQL Server(지원되는 모든 버전) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yes분석 플랫폼 시스템(PDW)

이 함수는 둘 이상의 문자열 값을 엔드투엔드 방식으로 연결하거나 조인한 결과 문자열을 반환합니다. (연결 중 구분 값을 추가하려면 CONCAT_WS를 참조하세요.)

Topic link iconTransact-SQL 구문 규칙

구문

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

참고

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

인수

string_value
다른 값에 연결할 문자열 값입니다. CONCAT 함수에는 둘 이상의 string_value 인수와 254개 이하의 string_value 인수가 필요합니다.

반환 형식

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

설명

CONCAT는 가변 개수의 문자열 인수를 가져와서 단일 문자열로 연결(또는 조인)합니다. 둘 이상의 입력 값이 필요하며, 그렇지 않은 경우 CONCAT에서 오류가 발생합니다. CONCAT는 병합하기 전에 모든 인수를 문자열 형식으로 암시적으로 변환합니다. CONCAT는 null 값을 빈 문자열로 암시적으로 변환합니다. CONCAT에서 모두 NULL 값인 인수를 받으면 varchar(1) 형식의 빈 문자열을 반환합니다. 문자열에 대한 암시적 변환은 데이터 형식 변환에 대한 기존 규칙을 따릅니다. 데이터 형식 변환에 대한 자세한 내용은 CAST 및 CONVERT(Transact-SQL)를 참조하세요.

반환 형식은 인수의 형식에 따라 달라집니다. 아래 표에서는 매핑을 보여 줍니다.

입력 형식 출력 형식 및 길이
1. 인수가

SQL-CLR 시스템 종류,

SQL-CLR UDT인 경우

또는

nvarchar(max)
nvarchar(max)
2. 그렇지 않고 인수가

varbinary(max)

또는

varchar(max)
varchar(max) - 매개 변수 중 하나가 임의 길이의 nvarchar가 아닌 경우. 이 경우 CONCATnvarchar(max) 형식의 결과를 반환합니다.
3. 그렇지 않고 인수가 최대 4,000자의 nvarchar 형식인 경우

( nvarchar(<= 4000) )
nvarchar(<= 4000)
4. 다른 모든 경우 매개 변수 중 하나가 임의 길이의 nvarcha가 아닌 경우 varchar(<= 8000)(최대 8,000자의 varchar) 이 경우 CONCATnvarchar(max) 형식의 결과를 반환합니다.

CONCAT에서 길이가 4,000자 <= nvarchar 또는 길이가 8,000자 <= varchar 입력 인수를 받으면, 암시적 변환이 결과의 길이에 영향을 줄 수 있습니다. 다른 데이터 형식은 문자열로 암시적으로 변환되는 경우 길이가 달라집니다. 예를 들어 int (14)의 문자열 길이는 12자이고, float의 길이는 32자입니다. 따라서 두 개의 정수를 연결하면 길이가 24 이상인 결과가 반환됩니다.

지원되는 LOB(Large Object) 형식의 입력 인수가 없는 경우 반환 형식에 관계없이 모든 반환 형식이 8,000자 길이로 잘립니다. 이 잘림은 공간을 유지하고 계획 생성 효율성을 지원합니다.

CONCAT 함수는 SQL Server 2012(11.x) 버전 이상의 연결된 서버에서 원격으로 실행할 수 있습니다. 이전 버전의 연결된 서버인 경우 연결된 서버에서 연결되지 않은 값을 반환한 후에 CONCAT 작업이 로컬로 수행됩니다.

예제

A. CONCAT 사용

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;  

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

Result  
-------------------------  
Happy Birthday 11/25  
  
(1 row(s) affected)  

B. NULL 값이 있는 CONCAT 사용

CREATE TABLE #temp (  
    emp_name NVARCHAR(200) NOT NULL,  
    emp_middlename NVARCHAR(200) NULL,  
    emp_lastname NVARCHAR(200) NOT NULL  
);  
INSERT INTO #temp VALUES( 'Name', NULL, 'Lastname' );  
SELECT CONCAT( emp_name, emp_middlename, emp_lastname ) AS Result  
FROM #temp;  

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

Result  
------------------  
NameLastname  
  
(1 row(s) affected)  

추가 정보

CONCAT_WS(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)