CONCAT(Transact-SQL)

둘 이상의 문자열 값을 연결한 결과인 문자열을 반환합니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

CONCAT ( string_value1, string_value2 [, string_valueN ] )

인수

  • string_value
    다른 값에 연결할 문자열 값입니다.

반환 형식

입력에 따라 문자열 또는 길이가 반환됩니다.

주의

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

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

입력 형식

출력 형식 및 길이

인수가 SQL-CLR 시스템 형식, SQL-CLR UDT 또는 nvarchar(max)인 경우

nvarchar(max)

그렇지 않고 인수가 varbinary(max) 또는 varchar(max)인 경우

매개 변수 중 하나가 임의 길이의 nvarchar가 아닌 경우 varchar(max). 매개 변수 중 하나가 임의 길이의 nvarchar인 경우에는 nvarchar(max)

그렇지 않고 인수가 nvarchar(<= 4000)인 경우

nvarchar(<= 4000)

그렇지 않은 다른 모든 경우

매개 변수 중 하나가 임의 길이의 nvarchar가 아닌 경우 varchar(<= 8000). 매개 변수 중 하나가 임의 길이의 nvarchar인 경우에는 nvarchar(max)

인수가 nvarchar에 대한 <= 4000이거나 varchar에 대한 <= 8000인 경우 암시적 변환은 결과의 길이에 영향을 줄 수 있습니다. 다른 데이터 형식은 암시적으로 문자열로 변환될 경우 다른 길이를 가집니다. 예를 들어 int(14)의 문자열 길이는 12자이고, float의 길이는 32자입니다. 따라서 두 정수를 연결한 결과는 길이가 24자 이상입니다.

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

이 함수는 SQL Server 2012 이상 서버에 대해서는 원격으로 실행할 수 있지만 SQL Server 2012 이전 버전이 설치되어 있는 서버에 대해서는 원격으로 실행할 수 없습니다.

1.CONCAT 사용

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

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

Result
-------------------------
Happy Birthday 11/25

(1 row(s) affected)

2.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)