다음을 통해 공유


TRY_CONVERT(Transact-SQL)

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

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

적용 대상: SQL Server(SQL Server 2012 - 현재 버전)

구문

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

인수

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

  • expression
    캐스팅할 값입니다.

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

    style은 CONVERT 함수의 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 이상 버전이 설치되어 있는 서버에 대해서는 원격으로 실행할 수 있지만 SQL Server 2012 이전 버전이 설치되어 있는 서버에 대해서는 원격으로 실행할 수 없습니다.

1.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)

2.TRY_CONVERT가 오류와 함께 실패

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

SELECT TRY_CONVERT(xml, 4) AS Result;
GO

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

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

3.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)