CONCAT 함수 (문자열 연결하기)와 주의 사항
- Version : SQL Server 2012
SQL Server 2012부터 도입된 CONCAT 함수는 둘 이상의 문자열 값을 연결한 결과를 반환하는 기능을 한다.
CONCAT 함수는 다양한 개수의 문자열 인수를 가져와 단일 문자열로 연결한다. 최소 두 개의 입력 값이 필요하며 그렇지 않은 경우 오류가 발생 한다. 모든 인수는 문자열 형식의 암시적으로 변환된 다음 연결 된다. NULL 값은 암시적으로 빈 문자열로 변환되며 모든 문자가 NULL인 경우 varchar(1)형식의 빈 문자열로 반환된다.
변환 형식은 인수의 형식에 따라 달라진다. 인수가 nvarchar <= 4000, varchar <= 8000 인 경우 암시적 변환은 결과의 길이에 영향을 줄 수도 있다. 다른 데이터 형식으로 암시적으로 문자열이 변환될 경우 다른 길이를 가진다.
LOB형식의 입력 인수가 없는 경우에는 형식에 관계없이 모든 반환 형식이 8000자로 잘린다. 이 잘림은 공간을 유지하고 계획 생성의 효율성을 지원한다.
[구문]
SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result; |
[문자열 연결 시 암시적 형변환으로 인한 오류]
DECLARE @AGE INT SET @AGE = 15
print 'the age is ' + @age + 'years old' |
[암시적 형변환과 명시적 형변환]
DECLARE @AGE INT SET @AGE = 15
SELECT CONCAT('THE AGE IS ', @AGE, 'YEARS OLD') --IMPLICIT CONVERSION SELECT 'THE AGE IS ' + CAST(@AGE AS VARCHAR) + 'YEARS OLD' --EXPLICIT CONVERSION |
DECLARE @TODAY DATETIME SET @TODAY = GETDATE()
SELECT CONCAT('TODAY IS ', @TODAY) --IMPLICIT CONVERSION SELECT 'TODAY IS ' + CAST(@TODAY AS VARCHAR) --EXPLICIT CONVERSION |
[NULL 문자 연결]
DECLARE @STRING1 VARCHAR(50) ='STRING1' DECLARE @STRING2 VARCHAR(50)=NULL
SELECT @STRING1 + @STRING2 -- RETURN NULL SELECT CONCAT(@STRING1,@STRING2) -- RETURNS 'STRING1' |
[NULL 문자 연결 시 주의 사항]
위에서 설명하였듯이 NULL 형식의 경우 varchar(1)의 빈값을 반환한다.
SELECT Title, FirstName, MiddleName, LastName, CONCAT(Title,' ',FirstName,' ',MiddleName,' ',LastName) as MailingName FROM Person.Person |
[참고자료]
l CONCAT : http://technet.microsoft.com/ko-kr/library/hh231515.aspx
l http://www.mssqltips.com/sqlservertip/2985/concatenate-sql-server-columns-into-a-string-with-concat/
l http://www.mssqltips.com/sqlservertip/3014/concatenation-of-different-sql-server-data-types/
2013-08-08 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
Event Session을 이용한 CPU Health check (0) | 2015.07.23 |
---|---|
DMV를 이용한 I/O Health check (0) | 2015.07.23 |
SQL Server 2012 Columnstore Index (0) | 2015.07.23 |
SQL Server 2012 File Stream / Table 관련 DMV (0) | 2015.07.23 |
SQL Server2012 DMV – 메모리 덤프, 서비스, 구성 확인 (0) | 2015.07.23 |