TRY_CAST(Transact-SQL)

적용 대상:SQL 서버Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric 의 SQL 분석 엔드포인트Microsoft Fabric 의 웨어하우스Microsoft Fabric의 SQL 데이터베이스

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

Transact-SQL 구문 표기 규칙

구문

TRY_CAST ( expression AS data_type [ ( length ) ] )

인수

expression

캐스팅할 유효한 식을 지정합니다.

data_type

expression을 캐스팅할 데이터 형식입니다. 이 값은 허용되는 값의 범위를 결정합니다.

length

대상 데이터 형식의 길이를 지정하는 선택적 정수입니다.

반환 형식

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

설명

TRY_CAST 는 전달된 값을 가져와서 지정된 data_type 변환하려고 시도합니다. 캐스트가 성공 TRY_CAST 하면 지정된 data_type 값을 반환합니다. 오류가 발생하면 null이 반환됩니다. 그러나 명시적으로 허용되지 TRY_CAST 않는 변환을 요청하는 경우 오류와 함께 실패합니다.

TRY_CAST 는 새 예약 키워드가 아니며 모든 호환성 수준에서 사용할 수 있습니다. TRY_CAST 에는 원격 서버에 연결할 때와 TRY_CONVERT 동일한 의미 체계가 있습니다.

TRY_CAST 는 다음과 같은 경우 식 에 대해 작동하지 않습니다.

  • 길이가 8,000을 초과하면 varchar(max)
  • 길이가 4,000을 초과하면 nvarchar(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
    

    이 쿼리는 의 Cast failed결과를 반환합니다.

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

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

    이 쿼리는 의 NULL결과를 반환합니다.

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

이 쿼리는 의 2022-12-31 00:00:00.0000000결과를 반환합니다.