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()
).