sql >> Database >  >> RDS >> Sqlserver

Hoe TRY_CAST() werkt in SQL Server

In SQL Server is een veelgebruikte functie CAST() , die een uitdrukking van het ene gegevenstype naar het andere converteert. Maar als de cast niet slaagt, wordt er een fout geretourneerd.

Voer TRY_CAST() in .

De TRY_CAST() functie retourneert geen fout als de cast mislukt. In plaats daarvan retourneert het NULL .

Er zijn echter enkele gevallen waarin het een fout retourneert.

Syntaxis

De syntaxis gaat als volgt:

TRY_CAST ( expression AS data_type [ ( length ) ] )

Waar expression is de uitdrukking die moet worden geconverteerd, data_type is het nieuwe gegevenstype, en length is een optionele lengte voor het nieuwe gegevenstype.

Voorbeeld 1 – Cast slaagt

Hier is een voorbeeld van het casten van een string als decimal :

SELECT TRY_CAST('007' AS DECIMAL(5,2));

Resultaat:

7.00

In dit geval is de cast geslaagd.

Voorbeeld 2 – Cast mislukt en retourneert NULL

Hier is een voorbeeld van het mislukken van de cast en NULL wordt geretourneerd:

SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));

Resultaat:

NULL

De cast is mislukt, en dus NULL is teruggestuurd.

Ter vergelijking, dit is wat er gebeurt als we CAST() gebruiken in plaats van TRY_CAST() :

SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));

Resultaat:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.

Voorbeeld 3 – Cast mislukt en retourneert een fout

Er zijn gevallen waarin TRY_CAST() zal een fout teruggeven.

Als casten expliciet niet is toegestaan, wordt een fout geretourneerd:

SELECT TRY_CAST(10 AS xml);

Resultaat:

Msg 529, Level 16, State 2, Line 1
Explicit conversion from data type int to xml is not allowed.

Meer informatie

Zie hoe CAST() Werkt in SQL Server voor meer conversievoorbeelden, en CAST() vs TRY_CAST() in SQL Server voor een vergelijking tussen CAST() en TRY_CAST() .

Zie de documentatie van Microsoft voor CAST() en CONVERT() voor meer gedetailleerde informatie (de meeste zijn ook van toepassing op TRY_CAST() ).


  1. SQL rekenkundige operatoren

  2. MySQL diakritisch ongevoelig zoeken (Spaanse accenten)

  3. .patch_storage

  4. Hoe cast ik char naar integer terwijl ik een query doe in django ORM?