Megosztás:


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

Visszaad egy értéket a megadott adattípusba, ha a cast sikeres lesz; egyébként visszaadja NULL.

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

data_type

Az adattípus, amelybe a kifejezést be szeretné adni.

length

Nem kötelező egész szám, amely megadja a céladattípus hosszát olyan adattípusok esetében, amelyek lehetővé teszik a felhasználó által megadott hosszt. A maximális hossz értéke 8 000 bájt.

kifejezés

A varázslat értéke.

stílus

Opcionális egész számkifejezés, amely meghatározza a függvény fordításának TRY_CONVERT.

a stílus ugyanazokat az értékeket fogadja, mint a függvény CONVERT. További információ: CAST és CONVERT.

A data_type értéke határozza meg az elfogadható értékek tartományát. Ha a stílusNULL, akkor TRY_CONVERT visszaadja NULL.

Visszatérési típusok

Visszaad egy értéket a megadott adattípusba, ha a cast sikeres lesz; egyébként visszaadja NULL.

Megjegyzések

TRY_CONVERT a megadott értéket veszi át, és megpróbálja átalakítani a megadott data_type. Ha a dobás sikeres, TRY_CONVERT a megadott értéket adja vissza a megadott data_type értékének; ha hiba történik, NULL visszakerül. Ha azonban olyan átalakítást kér, amely kifejezetten nem engedélyezett, hibaüzenettel TRY_CONVERT meghiúsul.

TRY_CONVERT egy fenntartott kulcsszó, amely a kompatibilitási szinttől 110kezdve .

Ez a funkció képes távolról telepíthető olyan szerverekre, amelyek SQL Server 2012 (11.x) és újabb verziókkal rendelkeznek. Nem olyan szerverekre van telepítve, amelyeknek korábbi verziójuk van, mint SQL Server 2012 (11.x).

Példák

A. TRY_CONVERT NULL-t ad vissza

  • A következő példa azt mutatja, hogy TRY_CONVERT a dobás sikertelenségével visszatér NULL .

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

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

B. TRY_CONVERT hibával bukik el

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

SELECT TRY_CONVERT(XML, 4) 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_CONVERT sikerrel jár

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

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

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