SQL Server/SQL Server Tip

SQL Server 2012 데이터 변환 함수 - PARSE, TRY_PARSE, TRY_CONVERT

SungWookKang 2015. 7. 23. 08:55
반응형

SQL Server 2012 데이터 변환 함수 

-      PARSE, TRY_PARSE, TRY_CONVERT 

   

-       Version : SQL Server 2012 

   

SQL Server 2012에서 제공하는 데이터 변환 함수 PARSE, TRY_PARSE 및 TRY_CONVERT 기능에 대해서 알아 본다. 

   

변환함수는 .NET Framework CLR이 설치 되어 있어야 사용할 수 있다. 또한 원격 서버에서 호출 시 오류가 발생 한다. 

   

[PARSE] 

요청한 데이터 형식으로 변환된 식 결과를 반환 한다. PARSE는 문자열에서 날짜/시간 및 숫자 형식으로 변환하는 경우에만 사용한다. 일반 형식 변환의 경우 이전처럼 CAST나 CONVERT를 사용한다. 문자열 값을 구문 분석 할 경우 성능에 영향을 주게 된다. 

   

StateProvinceCode 컬럼이 문자형으로 되어 있다. 

use AdventureWorks2012 

go 

   

select  

    StateprovinceID, 

    StateProvinceCode 

from person.StateProvince 

where CountryRegionCode in ('US', 'FR') 

    AND Name IN ('California', 'Vienne'

   

 

   

   

PARSE 함수를 사용하여 데이터 타입을 변환한다. 

SELECT  

StateProvinceID 

,StateProvinceCode 

,PARSE(StateProvinceCode AS INT) AS [Using PARSE Function]  

FROM Person.StateProvince  

WHERE  

CountryRegionCode IN ('FR')  

AND  

Name IN ('Vienne') 

GO 

/* Using PARSE Function to Convert String to Date Time */ 

SELECT PARSE('12/09/2011' AS datetime) AS [Using PARSE Function]  

GO 

SELECT PARSE('Friday, 09 December 2011' AS datetime USING 'en-US') AS [Using PARSE Function]  

GO 

   

 

   

   

[TRY_PARSE] 

요청한 데이터 형식으로 반환하거나 실패 할 경우 NULL로 반환한다. TRY_PARSE는 문자열에서 날짜/시간 및 숫자 형식으로 변환하는 경우에만 사용한다. 

   

SELECT  

StateProvinceID 

,StateProvinceCode 

,TRY_PARSE(StateProvinceCode AS INT) AS [Using TRY_PARSE Function]  

FROM Person.StateProvince  

WHERE  

CountryRegionCode IN ('US','FR')  

AND  

Name IN ('California','Vienne') 

GO 

/* Using PARSE Function to Convert String to Date Time */ 

SELECT TRY_PARSE('12/09/2011' AS datetime) AS [Using TRY_PARSE Function]  

GO 

SELECT TRY_PARSE('Friday, 09 December 2011' AS datetime USING 'en-US')  

AS [Using TRY_PARSE Function]  

GO 

   

 

   

   

[TRY_CONVERT] 

캐스트에 성공하면 지정한 데이터 형식으로 캐스팅된 값을 반환한다. 실패 시 NULL을 반환한다. 

   

일반적인 Convert를 사용하였을 경우에는 쿼리 에러를 반환한다. 

SELECT  

StateProvinceID 

,StateProvinceCode 

,CONVERT(INT,StateProvinceCode) AS [Using CONVERT Function]  

FROM Person.StateProvince  

WHERE  

CountryRegionCode IN ('US','FR')  

AND  

NAME IN ('California','Vienne') 

GO 

   

 

   

TRY_CONVERT를 사용하였을 경우 NULL을 반환한다. 

SELECT  

StateProvinceID 

,StateProvinceCode 

,TRY_CONVERT(INT,StateProvinceCode) AS [Using TRY_CONVERT Function]  

FROM Person.StateProvince  

WHERE  

CountryRegionCode IN ('US','FR')  

AND  

Name IN ('California','Vienne') 

GO 

   

 

   

   

[참고자료] 

l  PARSE : http://technet.microsoft.com/ko-kr/library/hh213316.aspx 

l  TRY_PARSE : http://technet.microsoft.com/ko-kr/library/hh213126.aspx 

l  TRY_CONVERT : http://technet.microsoft.com/ko-kr/library/hh230993.aspx 

l  TRY_CAST : http://technet.microsoft.com/ko-kr/library/hh974669.aspx 

http://www.mssqltips.com/sqlservertip/2564/new-data-type-conversion-functions-in-sql-server-2012/ 

   

   

2014-01-27 / 강성욱 / http://sqlmvp.kr 

반응형