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