TRY_CAST (Transact-SQL)
Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric
Возвращает значение, приведенное к указанному типу, если приведение проходит успешно; в противном случае возвращает NULL.
Соглашения о синтаксисе Transact-SQL
Синтаксис
TRY_CAST ( expression AS data_type [ ( length ) ] )
Примечание.
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
выражение
Указывает любое допустимое выражение для приведения.
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
не работает для varchar(max), если длина превышает 8000.
Примеры
А. 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/2022' AS DATETIME2) AS Result;
GO
Результирующий набор:
Result
----------------------
NULL
(1 row(s) affected)
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.
C. TRY_CAST выполнено успешно
В этом примере показано, что выражение должно иметь ожидаемый формат.
SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO
Результирующий набор:
Result
----------------------------------
2022-12-31 00:00:00.0000000
(1 row(s) affected)
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по