Consulte IsNumeric() Quebrado? Só até certo ponto.
SELECT CAST('.' AS MONEY)
retorna
0.00
(embora a conversão falhe para int
e float
) ISNUMERIC
apenas verifica se o valor pode ser convertido em qualquer um dos tipos de dados numéricos, o que geralmente é inútil. Normalmente você quer saber se ele pode ser convertido para um tipo específico. Além disso, nem parece fazer essa tarefa corretamente para todas as entradas possíveis..
ISNUMERIC(' ')
retorna 0
apesar de lançar com sucesso tanto para int quanto para dinheiro. Por outro lado ISNUMERIC(N'8')
retorna 1
mas não converte com sucesso para nada que eu tentei. Algumas funções auxiliares úteis para isso estão aqui IsNumeric, IsInt, IsNumber.
O SQL Server 2012 introduziu o
TRY_PARSE
e TRY_CONVERT
que ajudam muito nisso.