Поделиться через


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 принимает те же значения, что и параметр style функции CONVERT. Дополнительные сведения см. в разделе Функции CAST и CONVERT (Transact-SQL).

    Диапазон допустимых значений определяется значением data_type. Если style равен NULL, то TRY_CONVERT возвращает значение NULL.

Типы возвращаемых значений

Возвращает значение, приведенное к указанному типу, если приведение проходит успешно; в противном случае возвращает NULL.

Замечания

TRY_CONVERT принимает переданное значение и пытается привести его к указанному типу data_type. Если приведение выполняется успешно, TRY_CONVERT возвращает значение в указанном типе data_type; если происходит ошибка, возвращается значение NULL. Однако в случае, если будет запрошено явно запрещенное преобразование, функция TRY_CONVERT возвратит ошибку.

При уровне совместимости 110 и выше TRY_CONVERT является зарезервированным ключевым словом.

Для серверов версии SQL Server 2012 и выше данная функция может быть удаленной. Данная функция не может быть удаленной для серверов с версией ниже SQL Server 2012.

Примеры

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

Б.TRY_CONVERT возвращает ошибку

В следующем примере показано, что TRY_CONVERT возвращает ошибку, если не разрешается явное приведение.

SELECT TRY_CONVERT(xml, 4) AS Result;
GO

Результатом выполнения этой инструкции будет ошибка, так как целое число не может быть приведено к типу данных XML.

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

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