CONCAT(Transact-SQL)
둘 이상의 문자열 값을 연결한 결과인 문자열을 반환합니다.
적용 대상: SQL Server(SQL Server 2012 - current version), Windows Azure 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 2014 이상 서버에 대해서는 원격으로 실행할 수 있지만 SQL Server 2014 이전 버전이 설치되어 있는 서버에 대해서는 원격으로 실행할 수 없습니다.
예
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)