Udostępnij przez


TRY_CONVERT (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca wartość przetworzoną do określonego typu danych, jeśli przerzut się powiedzie; w przeciwnym razie zwraca NULL.

Transact-SQL konwencje składni

Składnia

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

Arguments

data_type

Typ danych, do którego ma być rzutowanie wyrażenia.

length

Opcjonalna liczba całkowita określająca długość docelowego typu danych, dla typów danych pozwalających na określoną długość przez użytkownika. Maksymalna wartość długości wynosi 8 000 bajtów.

expression

Wartość rzucania.

styl

Opcjonalne wyrażenie całkowitoliczbowe, które określa, jak funkcja TRY_CONVERT ma przetłumaczyć wyrażenie.

style akceptuje te same wartości co parametr stylu funkcji CONVERT . Aby uzyskać więcej informacji, zobacz CAST i CONVERT.

Wartość data_type określa zakres dopuszczalnych wartości. Jeśli styl jest , NULLto TRY_CONVERT zwraca NULL.

Typy zwracane

Zwraca wartość przetworzoną do określonego typu danych, jeśli przerzut się powiedzie; w przeciwnym razie zwraca NULL.

Uwagi

TRY_CONVERT pobiera przekazaną do niej wartość i próbuje przekonwertować ją na określony data_type. Jeśli rzut się powiedzie, TRY_CONVERT zwraca wartość jako określoną data_type; jeśli wystąpi błąd, zwraca się. NULL Jeśli jednak zażądasz konwersji jawnie niedozwolonej, TRY_CONVERT wystąpi błąd.

TRY_CONVERT jest zarezerwowanym słowem kluczowym, zaczynającym się od poziomu 110zgodności .

Funkcja ta może być zdalnie przesyłana do serwerów z wersjami SQL Server 2012 (11.x) i nowszymi. Nie jest zdalnie przydzielany do serwerów, które mają wersję starszą niż SQL Server 2012 (11.x).

Przykłady

A. TRY_CONVERT zwraca NULL

  • Poniższy przykład pokazuje, że wraca, TRY_CONVERTNULL gdy rzut się nie uda.

    SELECT
        CASE WHEN TRY_CONVERT(FLOAT, 'test') IS NULL
        THEN 'Cast failed'
        ELSE 'Cast succeeded'
    END AS Result;
    GO
    

    To zapytanie zwraca wynik .Cast failed

  • W poniższym przykładzie pokazano, że wyrażenie musi mieć oczekiwany format.

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

    To zapytanie zwraca wynik .NULL

B. TRY_CONVERT nie wychodzi z błędem

W poniższym przykładzie pokazano, że TRY_CONVERT zwraca błąd, gdy rzutowanie jest jawnie niedozwolone.

SELECT TRY_CONVERT(XML, 4) AS Result;
GO

Wynikiem tego stwierdzenia jest błąd, ponieważ liczba całkowita nie może zostać włożona do typu danych xml .

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

C. TRY_CONVERT odnosi sukces

W tym przykładzie pokazano, że wyrażenie musi mieć oczekiwany format.

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

To zapytanie zwraca wynik .2022-12-31 00:00:00.0000000