다음을 통해 공유


TRY_CAST(Transact-SQL)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

캐스트에 성공하면 지정한 데이터 형식으로 캐스팅된 값을 반환합니다. 그렇지 않으면 Null을 반환합니다.

Transact-SQL 구문 표기 규칙

구문

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 동일한 의미 체계가 있습니다.

TRY_CAST는 길이가 8000을 초과하면 varchar(max)에 대해 작동하지 않습니다.

예제

A. TRY_CAST가 null을 반환

다음 예제에서는 캐스트가 실패할 때 null을 반환하는 방법을 TRY_CAST 보여 줍니다.

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/2022' AS DATETIME2) AS Result;
GO

결과 집합은 다음과 같습니다.

Result
----------------------
NULL
  
(1 row(s) affected)

B. 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.

C. TRY_CAST 성공

이 예에서는 식이 해당 형식에 맞아야 한다는 것을 보여 줍니다.

SET DATEFORMAT mdy;

SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO

결과 집합은 다음과 같습니다.

Result
----------------------------------
2022-12-31 00:00:00.0000000
  
(1 row(s) affected)

참고 항목