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


TRY_CAST (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка SQL аналитики в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в Microsoft Fabric

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

TRY_CAST ( expression AS data_type [ ( length ) ] )

Аргументы

выражение

Указывает любое допустимое выражение для приведения.

data_type

Тип данных, к которому следует привести expression. Это значение определяет диапазон допустимых значений.

length

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

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

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

Замечания

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

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

TRY_CAST не работает для выражения в следующих случаях:

  • varchar(max) если длина превышает 8 000
  • nvarchar(max), если длина превышает 4000

Примеры

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

    Этот запрос возвращает результат .Cast failed

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

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

    Этот запрос возвращает результат .NULL

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

Этот запрос возвращает результат .2022-12-31 00:00:00.0000000