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
l http://www.mssqltips.com/sqlservertip/2564/new-data-type-conversion-functions-in-sql-server-2012/
2014-01-27 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 2012 Contained Database (0) | 2015.07.23 |
---|---|
SQL Server 2012 사용자 정의 서버 역할 만들기 - 서버 역할을 지정하여 접근 제어 하기 (0) | 2015.07.23 |
SQL Server 2012 논리 함수(IIF, CHOOSE) (0) | 2015.07.23 |
SQL Server 2012 새로운 날짜 및 시간 함수 (0) | 2015.07.23 |
SQL Server 2012 FORMAT 함수와 CONCAT 함수 (0) | 2015.07.23 |