SQL IsNumeric Gibt True zurück, aber SQL Reports 'Umwandlung Fehlgeschlagen'

Vorausgesetzt, die folgenden Daten:

Column1 (data type: varchar(50))
--------
11.6
-1
1,000
10"    
Non-Numeric String

Ich habe eine Abfrage, die Daten aus dieser Spalte und möchte feststellen, ob der Wert eine Zahl ist, dann schicken Sie es als solche in meiner Abfrage. So mache ich die folgenden

SELECT CASE
       WHEN IsNumeric(Replace(Column1, '"', '')) = 1 THEN Replace(Column1, '"', '')
       ELSE 0
   END AS NumericValue

SQL reporting zurück:

Fehler bei der Konvertierung beim konvertieren den varchar-Wert '11.6' in den int-Datentyp.

Warum? Ich habe auch versucht zu zwingen, Darsteller:

SELECT CASE
       WHEN IsNumeric(Replace(Column1, '"', '')) = 1 THEN cast(Replace(Column1, '"', '') AS float)
       ELSE 0
   END AS NumericValue

Und ich bekam:

Fehler beim konvertieren von Datentyp varchar zu schweben.

IsNumeric() akzeptieren doubles/floats/singles etc. Auch, es überprüft nicht die overflows (99999999999999999999999999999 numerisch ist, wird nicht konvertieren, um die meisten Arten). Die beste Praxis-für die Art der situation ist, dass Sie nicht speichern Sie numerische Daten in string-Felder in den ersten Platz.

InformationsquelleAutor Kyle Ballard | 2009-02-20

Schreibe einen Kommentar