Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Vérification de la validation numérique

Votre expression est valide, je soupçonne que vous obtenez une valeur considérée comme numérique par la fonction, mais qui ne peut pas être convertie en entier. Essayez ce qui suit...

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

L'instruction de conversion explosera avec l'erreur que vous signalez...

Consultez cette question :T-sql - déterminer si la valeur est un entier

Quelques exemples supplémentaires de valeurs "Numériques" qui ne peuvent pas être converties en nombre entier

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

Ajoutez une sélection convert(int,myField) dans le begin/end pour voir la valeur réelle du champ à l'origine de l'erreur