Share via


TRY_CONVERT(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 Warehouse

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

Transact-SQL 구문 표기 규칙

Syntax

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

참고 항목

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

인수

data_type

expression을 캐스팅할 데이터 형식입니다.

length

사용자가 지정한 길이를 허용하는 데이터 형식에 대해 대상 데이터 형식의 길이를 지정하는 선택적 정수입니다. 길이에 대한 최대값은 8,000바이트입니다.

expression

캐스팅할 값입니다.

style

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

style은 함수의 스타일 매개 변수와 동일한 값을 허용합니다CONVERT. 자세한 내용은 CAST 및 CONVERT를 참조하세요.

data_type은 허용되는 값의 범위를 결정합니다. style이면 .를 TRY_CONVERT 반환합니다NULL.NULL

반환 형식

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

설명

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

TRY_CONVERT는 호환성 수준110부터 시작하는 예약된 키워드(keyword).

이 함수는 SQL Server 2012(11.x) 이상 버전이 있는 서버로 원격으로 연결할 수 있습니다. SQL Server 2012(11.x)보다 이전 버전의 서버로 원격으로 이동되지 않습니다.

예제

A. TRY_CONVERT NULL을 반환합니다.

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

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

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

Result  
------------  
Cast failed

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

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

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

Result  
----------------------  
NULL

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

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

Result
----------------------------------
2022-12-31 00:00:00.0000000