TRY_CONVERT (Transact-SQL)

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

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

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

Синтаксис

TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

data_type [ ( length ) ]
Тип данных, к которому следует привести 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 (11.x) и выше. Он не будет удален на серверы с версией ниже SQL Server 2012 (11.x).

Примеры

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

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

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

SELECT TRY_CONVERT(xml, 4) AS Result;  
GO  

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

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

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