Sdílet prostřednictvím


TRY_CONVERT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Pokud je přenášení úspěšné, vrátí hodnotu přetvořenou do určeného datového typu; jinak vrací NULL.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

data_type

Datový typ, do kterého se má výraz přetypovat.

length

Volitelné celé číslo, které určuje délku cílového datového typu, pro datové typy, které uživateli umožňují zadanou délku. Maximální hodnota délky je 8 000 bajtů.

expression

Hodnota seslání.

styl

Volitelný celočíselný výraz, který specifikuje, jak TRY_CONVERT má funkce výraz překládat.

styl přijímá stejné hodnoty jako parametr stylu funkce CONVERT . Další informace naleznete v tématu CAST a CONVERT.

Hodnota data_type určuje rozsah přijatelných hodnot. Pokud je styl , NULLpak TRY_CONVERT vrací NULL.

Návratové typy

Pokud je přenášení úspěšné, vrátí hodnotu přetvořenou do určeného datového typu; jinak vrací NULL.

Poznámky

TRY_CONVERT vezme hodnotu předanou do ní a pokusí se ji převést na zadanou data_type. Pokud převedení uspěje, TRY_CONVERT vrátí se hodnota ve stanovené data_type; pokud dojde k chybě, vrátí se. NULL Pokud ale požádáte o převod, který explicitně není povolený, dojde TRY_CONVERT k chybě.

TRY_CONVERT je rezervované klíčové slovo, začíná na úrovni 110kompatibility .

Tato funkce je schopna vzdáleně připojit k serverům s SQL Server 2012 (11.x) a novějšími verzemi. Není vzdáleně přidělován serverům, které mají verzi starší než SQL Server 2012 (11.x).

Examples

A. TRY_CONVERT vrací NULL

  • Následující příklad ukazuje, že se vracíTRY_CONVERT, NULL když sesílání selže.

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

    Tento dotaz vrací výsledek .Cast failed

  • Následující příklad ukazuje, že výraz musí být v očekávaném formátu.

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

    Tento dotaz vrací výsledek .NULL

B. TRY_CONVERT selže s chybou

Následující příklad ukazuje, že TRY_CONVERT vrátí chybu, když přetypování není explicitně povoleno.

SELECT TRY_CONVERT(XML, 4) AS Result;
GO

Výsledkem tohoto tvrzení je chyba, protože celé číslo nelze přenést do xml datového typu.

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

C. TRY_CONVERT uspěje

Tento příklad ukazuje, že výraz musí být v očekávaném formátu.

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

Tento dotaz vrací výsledek .2022-12-31 00:00:00.0000000