sql >> Databasteknik >  >> RDS >> Sqlserver

Hur TRY_CAST() fungerar i SQL Server

I SQL Server är en ofta använd funktion CAST() , som konverterar ett uttryck av en datatyp till en annan. Men om rollbesättningen inte lyckas, returnerar den ett fel.

Ange TRY_CAST() .

TRY_CAST() funktionen returnerar inte ett fel om casten misslyckas. Istället returnerar den NULL .

Det finns dock vissa tillfällen då det kommer att returnera ett fel.

Syntax

Syntaxen ser ut så här:

TRY_CAST ( expression AS data_type [ ( length ) ] )

Där expression är uttrycket som ska konverteras, data_type är den nya datatypen och length är en valfri längd för den nya datatypen.

Exempel 1 – Cast lyckas

Här är ett exempel på hur du castar en sträng som decimal :

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

Resultat:

7.00

I det här fallet lyckades rollbesättningen.

Exempel 2 – Cast misslyckas och returnerar NULL

Här är ett exempel på att casten misslyckas och NULL returneras:

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

Resultat:

NULL

Casten misslyckades, och därför NULL returnerades.

Som en jämförelse, här är vad som händer när vi använder CAST() istället för TRY_CAST() :

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

Resultat:

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

Exempel 3 – Cast misslyckas och returnerar ett fel

Det finns vissa tillfällen där TRY_CAST() kommer att returnera ett fel.

Om en cast uttryckligen inte är tillåten, returnerar den ett felmeddelande:

SELECT TRY_CAST(10 AS xml);

Resultat:

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

Mer information

Se hur CAST() Fungerar i SQL Server för fler konverteringsexempel och CAST() kontra TRY_CAST() i SQL Server för en jämförelse mellan CAST() och TRY_CAST() .

Se Microsofts dokumentation för CAST() och CONVERT() för mer detaljerad information (det mesta gäller även för TRY_CAST() ).


  1. Är du sorterad? Tips angående T-SQL-fönsterbeställning

  2. Hur man bara lagrar tid; inte datum och tid?

  3. Multi-DC PostgreSQL:Konfigurera en standby-nod på en annan geografisk plats över en VPN

  4. SUM() Funktion i SQL Server