CONCAT(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
이 함수는 둘 이상의 문자열 값을 엔드투엔드 방식으로 연결하거나 조인한 결과 문자열을 반환합니다.
참고 항목
연결 중에 구분 값을 추가하려면 CONCAT_WS 사용합니다.
구문
CONCAT ( argument1 , argument2 [ , argumentN ] ... )
인수
argument1, argument2 [ , argumentN ]
문자열 값의 식입니다. 함수에는 CONCAT
두 개 이상의 인수가 필요하며 인수는 254개 이하입니다.
반환 형식
길이와 형식이 입력에 따라 달라지는 문자열 값입니다.
설명
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가 아닌 경우. 이 경우 CONCAT 는 nvarchar(max) 형식의 결과를 반환합니다. |
3. 그렇지 않으면 최대 4,000자의 nvarchar 형식 인수(nvarchar(<= 4000)) | nvarchar(<= 4000) |
4. 다른 모든 경우 | 매개 변수 중 하나가 길이가 nvarchar인 경우가 아니면 최대 8,000자(varchar(<= 8000)의 varchar 형식 인수입니다. 이 경우 CONCAT 는 nvarchar(max) 형식의 결과를 반환합니다. |
CONCAT
에서 길이가 4,000자 <= nvarchar 또는 길이가 8,000자 <= varchar 입력 인수를 받으면, 암시적 변환이 결과의 길이에 영향을 줄 수 있습니다. 다른 데이터 형식은 문자열로 암시적으로 변환되는 경우 길이가 달라집니다. 예를 들어 값이 있는 int의 문자열 길이는 2인 반면 값이 있는 1234.56789
float의 문자열 길이는 7(1234.57
)입니다.14
따라서 이러한 두 값의 연결은 길이가 9자 이하인 결과를 반환합니다.
입력 인수에 지원되는 LOB(큰 개체) 형식이 없는 경우 반환 형식에 관계없이 반환 형식은 길이가 8,000자로 잘립니다. 이 잘림은 공간을 유지하고 계획 생성 효율성을 지원합니다.
CONCAT
는 SQL Server 2012(11.x) 이상 버전을 실행하는 연결된 서버에서 원격으로 실행할 수 있습니다. 이전 연결된 서버의 경우 연결된 서버가 CONCAT
연결되지 않은 값을 반환한 후 로컬에서 작업이 수행됩니다.
예제
A. CONCAT 사용
SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;
결과 집합은 다음과 같습니다.
Result
--------------------
Happy Birthday 11/25
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