Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure 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