Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Überprüfung auf numerische Validierung

Ihr Ausdruck ist gültig, ich vermute, dass Sie einen Wert erhalten, der von der Funktion als numerisch betrachtet wird, aber nicht in eine Ganzzahl konvertiert werden kann. Versuchen Sie Folgendes...

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

Die convert-Anweisung explodiert mit dem Fehler, den Sie melden...

Sehen Sie sich diese Frage an:T-sql - bestimmen ob Wert ist Ganzzahl

Einige weitere Beispiele für "Numerische" Werte, die nicht in Ganzzahlen umgewandelt werden können

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

Fügen Sie ein ausgewähltes convert(int,myField) hinzu im begin/end um den tatsächlichen Feldwert zu sehen, der den Fehler verursacht hat