TRY_CONVERT(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트

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

Transact-SQL 구문 표기 규칙

Syntax

TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )  

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

data_type [ ( length ) ]
expression을 캐스팅할 데이터 형식입니다.

expression
캐스팅할 값입니다.

style
TRY_CONVERT 함수가 expression을 변환하는 방법을 지정하는 선택적 정수 식입니다.

styleCONVERT 함수의 style 매개 변수와 동일한 값을 허용합니다. 자세한 내용은 CAST 및 CONVERT(Transact-SQL)를 참조하세요.

허용되는 값 범위는 data_type 값에 따라 결정됩니다. style이 Null이면 TRY_CONVERT는 Null을 반환합니다.

반환 형식

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

설명

TRY_CONVERT 함수는 전달된 값을 사용하여 지정된 data_type으로 변환을 시도합니다. 캐스팅에 성공하면 TRY_CONVERT는 지정된 data_type으로 값을 반환합니다. 오류가 발생하면 Null이 반환됩니다. 그러나 명시적으로 허용되지 않는 변환을 요청하면 오류와 함께 TRY_CONVERT가 실패합니다.

TRY_CONVERT는 호환성 수준 110 이상의 예약 키워드입니다.

이 함수는 SQL Server 2012(11.x) 이상 버전이 설치되어 있는 서버에 대해서는 원격으로 실행할 수 있지만 SQL Server 2012(11.x) 이전 버전이 설치되어 있는 서버에 대해서는 원격으로 실행할 수 없습니다.

예제

A. TRY_CONVERT가 Null 반환

다음 예에서는 캐스팅을 실패할 때 TRY_CONVERT가 null을 반환하는 것을 보여 줍니다.

SELECT   
    CASE WHEN TRY_CONVERT(float, 'test') IS NULL   
    THEN 'Cast failed'  
    ELSE 'Cast succeeded'  
END AS Result;  
GO  

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

Result  
------------  
Cast failed  
  
(1 row(s) affected)  

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

SET DATEFORMAT dmy;  
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;  
GO  

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

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

B. TRY_CONVERT가 오류와 함께 실패

다음 예에서는 캐스팅이 명시적으로 허용되지 않은 경우 TRY_CONVERT가 오류를 반환하는 것을 보여 줍니다.

SELECT TRY_CONVERT(xml, 4) AS Result;  
GO  

정수는 xml 데이터 형식으로 캐스팅될 수 없으므로 이 문을 실행하면 오류가 발생합니다.

Explicit conversion from data type int to xml is not allowed.  

C. TRY_CONVERT가 성공

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

SET DATEFORMAT mdy;  
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;  
GO  

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

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

참고 항목

CAST 및 CONVERT(Transact-SQL)