O Microsoft SQL Server tem o que considero uma função notavelmente sensata, try_cast()
que retorna a null
se a conversão não for bem-sucedida, em vez de gerar um erro.
Isso torna possível usar uma CASE
expressão ou um coalesce
para recorrer. Por exemplo:
SELECT coalesce(try_cast(data as int),0);
A questão é, o PostgreSQL tem algo semelhante?
A pergunta é feita para preencher algumas lacunas no meu conhecimento, mas também há o princípio geral de que alguns preferem uma reação menos dramática a alguns erros do usuário. Retornar a null
é mais fácil de se fazer em SQL do que um erro. Por exemplo SELECT * FROM data WHERE try_cast(value) IS NOT NULL;
. Na minha experiência, os erros do usuário às vezes são melhor tratados se houver um plano B.