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


TRY_CAST (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2012 по текущую версию), База данных SQL Windows Azure (с первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

TRY_CAST ( expression AS data_type [ ( length ) ] )

Аргументы

  • expression
    Приводимое значение. Любое допустимое выражение.
  • data_type
    Тип данных, к которому следует привести expression.

  • length
    Необязательное целое число, обозначающее длину целевого типа данных.

    Диапазон допустимых значений определяется значением data_type.

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

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

Замечания

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

TRY_CAST не является новым зарезервированным ключевым словом и доступно на любом уровне совместимости. При установлении соединения с удаленными серверами TRY_CAST имеет ту же семантику, что и TRY_CONVERT.

Примеры

А.TRY_CAST возвращает NULL

В следующем примере показано, что TRY_CAST возвращает значение NULL, если не удается выполнить приведение.

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

Ниже приводится результирующий набор.

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

(1 row(s) affected)

В следующем примере показано, что выражение должно иметь ожидаемый формат.

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

Ниже приводится результирующий набор.

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

(1 row(s) affected)

Б.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.

В.TRY_CAST выполнено успешно

В этом примере показано, что выражение должно иметь ожидаемый формат.

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

Ниже приводится результирующий набор.

Result
----------------------------------
2010-12-31 00:00:00.0000000

(1 row(s) affected)

См. также

Справочник

TRY_CONVERT (Transact-SQL)

Функции CAST и CONVERT (Transact-SQL)