TRY_CAST(Transact-SQL)
캐스트에 성공하면 지정한 데이터 형식으로 캐스팅된 값을 반환합니다. 그렇지 않으면 Null을 반환합니다.
구문
TRY_CAST ( expression AS data_type [ ( length ) ] )
인수
- expression
캐스팅할 값입니다. 유효한 식입니다.
data_type
expression을 캐스팅할 데이터 형식입니다.length
대상 데이터 형식의 길이를 지정하는 선택적 정수입니다.허용되는 값 범위는 data_type 값에 따라 결정됩니다.
반환 형식
캐스트에 성공하면 지정한 데이터 형식으로 캐스팅된 값을 반환합니다. 그렇지 않으면 Null을 반환합니다.
주의
TRY_CAST 함수는 전달된 값을 사용하여 지정된 data_type으로 변환합니다. 캐스팅에 성공하면 TRY_CAST는 지정된 data_type으로 값을 반환합니다. 오류가 발생하면 Null이 반환됩니다. 그러나 명시적으로 허용되지 않는 변환을 요청하면 오류와 함께 TRY_CAST가 실패합니다.
TRY_CAST는 예약 키워드가 아니며 모든 호환성 수준에서 사용할 수 있습니다. 원격 서버에 연결할 때 TRY_CAST는 TRY_CONVERT와 동일한 의미 체계를 갖습니다.
예
1.TRY_CAST가 null을 반환
다음 예에서는 캐스팅을 실패할 때 TRY_CAST가 null을 반환하는 것을 보여 줍니다.
SELECT
CASE WHEN TRY_CAST('test' AS float) IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
결과 집합은 다음과 같습니다.
Result
------------
Cast failed
(1 row(s) affected)
다음 예에서는 식이 해당 형식에 맞아야 한다는 것을 보여 줍니다.
SET DATEFORMAT dmy;
SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;
GO
결과 집합은 다음과 같습니다.
Result
----------------------
NULL
(1 row(s) affected)
2.TRY_CAST가 오류와 함께 실패
다음 예에서는 캐스팅이 명시적으로 허용되지 않은 경우 TRY_CAST가 오류를 반환하는 것을 보여 줍니다.
SELECT TRY_CAST(4 AS xml) AS Result;
GO
정수는 xml 데이터 형식으로 캐스팅될 수 없으므로 이 문을 실행하면 오류가 발생합니다.
Explicit conversion from data type int to xml is not allowed.
3.TRY_CAST 성공
이 예에서는 식이 해당 형식에 맞아야 한다는 것을 보여 줍니다.
SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2010' AS datetime2) AS Result;
GO
결과 집합은 다음과 같습니다.
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)