Siehe IsNumeric() defekt? Nur bis zu einem gewissen Punkt.
SELECT CAST('.' AS MONEY)
gibt 0.00
zurück (obwohl die Umwandlung für int
fehlschlägt und float
)
ISNUMERIC
prüft nur, ob der Wert in einen der numerischen Datentypen umgewandelt werden kann, was im Allgemeinen nutzlos ist. Normalerweise möchten Sie wissen, ob es in einen bestimmten Typ umgewandelt werden kann.
Außerdem scheint es nicht einmal diese Aufgabe für alle möglichen Eingaben korrekt zu erledigen.. ISNUMERIC(' ')
gibt 0
zurück trotz erfolgreichem Casting sowohl auf int als auch auf money. Umgekehrt ISNUMERIC(N'8')
gibt 1
zurück aber nicht erfolgreich in etwas umgewandelt, was ich versucht habe.
Einige nützliche Hilfsfunktionen dafür sind hier IsNumeric, IsInt, IsNumber.
SQL Server 2012 hat TRY_PARSE
eingeführt und TRY_CONVERT
die dabei sehr helfen.