Sdílet prostřednictvím


TRY_CAST (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

Vrátí přetypování hodnoty na zadaný datový typ, pokud přetypování proběhne úspěšně; v opačném případě vrátí hodnotu null.

Transact-SQL konvence syntaxe

Syntaxe

TRY_CAST ( expression AS data_type [ ( length ) ] )

Arguments

expression

Určuje libovolný platný výraz, který se má přetypovat.

data_type

Datový typ, do kterého se má výraz přetypovat. Tato hodnota určuje rozsah přijatelných hodnot.

length

Volitelné celé číslo, které určuje délku cílového datového typu.

Návratové typy

Vrátí přetypování hodnoty na zadaný datový typ, pokud přetypování proběhne úspěšně; v opačném případě vrátí hodnotu null.

Poznámky

TRY_CAST vezme hodnotu předanou do ní a pokusí se ji převést na zadanou data_type. Pokud je přetypování úspěšné, TRY_CAST vrátí hodnotu jako zadanou data_type; pokud dojde k chybě, vrátí se hodnota null. Pokud ale požádáte o převod, který explicitně není povolený, dojde TRY_CAST k chybě.

TRY_CAST není nové rezervované klíčové slovo a je k dispozici ve všech úrovních kompatibility. TRY_CAST má stejnou sémantiku jako TRY_CONVERT při připojování ke vzdáleným serverům.

TRY_CAST nefunguje pro výraz v následujících případech:

  • varchar(max), pokud je délka delší než 8 000
  • nvarchar(max), pokud je délka delší než 4 000

Examples

A. TRY_CAST vrací NULL

  • Následující příklad ukazuje, že vrátí TRY_CAST hodnotu null při selhání přetypování.

    SELECT
    CASE WHEN TRY_CAST('test' AS FLOAT) 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_CAST('12/31/2022' AS DATETIME2) AS Result;
    GO
    

    Tento dotaz vrací výsledek .NULL

B. TRY_CAST selže s chybou

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

SELECT TRY_CAST(4 AS XML) 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_CAST úspěšně

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

SET DATEFORMAT mdy;

SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO

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