Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como TRY_CAST() funciona no SQL Server


No SQL Server, uma função frequentemente usada é CAST() , que converte uma expressão de um tipo de dados para outro. Mas se a conversão não for bem-sucedida, ele retornará um erro.

Digite TRY_CAST() .

O TRY_CAST() A função não retorna um erro se a conversão falhar. Em vez disso, ele retorna NULL .

Há algumas ocasiões, no entanto, em que ele retornará um erro.

Sintaxe


A sintaxe fica assim:
TRY_CAST ( expression AS data_type [ ( length ) ] )

Onde expression é a expressão a ser convertida, data_type é o novo tipo de dados e length é um comprimento opcional para o novo tipo de dados.

Exemplo 1 – Elenco bem-sucedido


Aqui está um exemplo de conversão de uma string como decimal :
SELECT TRY_CAST('007' AS DECIMAL(5,2));

Resultado:
7.00

Neste caso, o elenco teve sucesso.

Exemplo 2 – A conversão falha e retorna NULL


Aqui está um exemplo da falha de conversão e NULL sendo devolvido:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));

Resultado:
NULL

A conversão falhou e, portanto, NULL foi devolvido.

Como comparação, veja o que acontece quando usamos CAST() em vez de TRY_CAST() :
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));

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

Exemplo 3 – A transmissão falha e retorna um erro


Existem algumas ocasiões em que TRY_CAST() retornará um erro.

Se uma conversão não for explicitamente permitida, ela retornará um erro:
SELECT TRY_CAST(10 AS xml);

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

Mais informações


Veja como CAST() Funciona no SQL Server para mais exemplos de conversão e CAST() vs TRY_CAST() no SQL Server para uma comparação entre CAST() e TRY_CAST() .

Consulte a documentação da Microsoft para CAST() e CONVERT() para informações mais detalhadas (a maioria também se aplica a TRY_CAST() ).