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


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

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

length

Указываемое дополнительно целое число, обозначающее длину целевого типа данных, который допускает указание длины пользователем. Максимальное значение длины составляет 8 000 байт.

выражение

Значение для приведения.

style

Необязательное целочисленное выражение, указывающее способ TRY_CONVERT перевода выражения функции.

стиль принимает те же значения, что и параметр CONVERT стиля функции. См. описание CAST и CONVERT.

Значение data_type определяет диапазон допустимых значений. Если стиль равенNULL, возвращаетсяNULLTRY_CONVERT.

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

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

Замечания

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

TRY_CONVERT— это зарезервированная ключевое слово, начиная с уровня 110совместимости.

Эта функция может быть удалена на серверы с 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

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

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

Результирующий набор:

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

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

Результирующий набор:

Result
----------------------------------
2022-12-31 00:00:00.0000000