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

Verificando a validação numérica


Sua expressão é válida, suspeito que você esteja obtendo um valor que é considerado numérico pela função, mas não pode ser convertido em um inteiro. Tente o seguinte...
declare @myfield varchar(20)
set @myfield='.'
if ISNUMERIC(@myfield)=1
begin
    select CONVERT(int,@myField)
end

A instrução convert explodirá com o erro que você está relatando ...

Confira esta pergunta:T-sql - determine se valor é inteiro

Mais alguns exemplos de valores "numéricos" que não podem ser convertidos em um número inteiro
select '1.e0',ISNUMERIC('1.e0') as IsNum  
union
select '.',ISNUMERIC('.') as IsNum  
union
select '12.31',ISNUMERIC('12.31') as IsNum  

Adicione um convert(int,myField) selecionado no begin/end para ver o valor real do campo que está causando o erro