Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Verifica della convalida numerica

La tua espressione è valida, sospetto che tu stia ottenendo un valore che è considerato un valore numerico dalla funzione, ma non può essere convertito in un numero intero. Prova quanto segue...

declare @myfield varchar(20)
set @myfield='.'
if ISNUMERIC(@myfield)=1
begin
    select CONVERT(int,@myField)
end

La dichiarazione di conversione esploderà con l'errore che stai segnalando...

Dai un'occhiata a questa domanda:T-sql - determina se il valore è intero

Alcuni altri esempi di valori "numerici" che non possono essere convertiti in un intero

select '1.e0',ISNUMERIC('1.e0') as IsNum  
union
select '.',ISNUMERIC('.') as IsNum  
union
select '12.31',ISNUMERIC('12.31') as IsNum  

Aggiungi un convert(int,myField) selezionato nel begin/end per vedere il valore effettivo del campo che causa l'errore