Megosztás:


TRY_CAST (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

A megadott adattípusra leadott értéket ad vissza, ha a leadás sikeres; ellenkező esetben null értéket ad vissza.

Transact-SQL szintaxis konvenciók

Szemantika

TRY_CAST ( expression AS data_type [ ( length ) ] )

Arguments

kifejezés

Megadja a leadni kívánt érvényes kifejezéseket.

data_type

Az adattípus, amelybe a kifejezést be szeretné adni. Ez az érték határozza meg az elfogadható értékek tartományát.

length

Nem kötelező egész szám, amely megadja a céladattípus hosszát.

Visszatérési típusok

A megadott adattípusra leadott értéket ad vissza, ha a leadás sikeres; ellenkező esetben null értéket ad vissza.

Megjegyzések

TRY_CAST a megadott értéket veszi át, és megpróbálja átalakítani a megadott data_type. Ha a leadás sikeres, TRY_CAST az értéket a megadott data_type adja vissza; hiba esetén a függvény null értéket ad vissza. Ha azonban olyan átalakítást kér, amely kifejezetten nem engedélyezett, hibaüzenettel TRY_CAST meghiúsul.

TRY_CAST nem új fenntartott kulcsszó, és minden kompatibilitási szinten elérhető. TRY_CAST ugyanazokkal a szemantikával rendelkezik, mint TRY_CONVERT a távoli kiszolgálókhoz való csatlakozáskor.

TRY_CAST a következő esetekben nem működik egy kifejezés esetében:

  • varchar(max), ha a hossz meghaladja a 8000-et
  • nvarchar(max), ha a hossz meghaladja a 4000-et

Példák

A. TRY_CAST returns NULL

  • Az alábbi példa azt mutatja be, hogy null TRY_CAST értéket ad vissza, ha a leadás meghiúsul.

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

    Ez a lekérdezés az eredményt adja: Cast failed.

  • Az alábbi példa bemutatja, hogy a kifejezésnek a várt formátumban kell lennie.

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

    Ez a lekérdezés az eredményt adja: NULL.

B. TRY_CAST hiba miatt meghiúsul

Az alábbi példa azt mutatja be, hogy TRY_CAST hibát ad vissza, ha a leadás kifejezetten nem engedélyezett.

SELECT TRY_CAST(4 AS XML) AS Result;
GO

Ennek az állításnak az eredménye hiba, mert egy egész számot nem lehet az xml adattípusba önteni.

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

C. TRY_CAST sikeres

Ez a példa azt mutatja be, hogy a kifejezésnek a várt formátumban kell lennie.

SET DATEFORMAT mdy;

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

Ez a lekérdezés az eredményt adja: 2022-12-31 00:00:00.0000000.