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


TRY_CONVERT (Transact-SQL)

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

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

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

Синтаксис

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

Аргументы

data_type

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

length

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

выражение

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

style

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

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

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

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

Возвращает значение, приведение к указанному типу данных, если приведение выполнено успешно; в противном случае возвращается 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
    

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

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

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

    Этот запрос возвращает результат .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.

В. TRY_CONVERT выполняется успешно

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

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

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