Voir IsNumeric() cassé ? Seulement jusqu'à un certain point.
SELECT CAST('.' AS MONEY)
renvoie 0.00
(bien que le cast échoue pour int
et float
)
ISNUMERIC
vérifie simplement que la valeur peut être convertie en l'un des types de données numériques, ce qui est généralement inutile. Habituellement, vous voulez savoir s'il peut être converti en un type spécifique.
De plus, il ne semble même pas effectuer cette tâche correctement pour toutes les entrées possibles.. ISNUMERIC(' ')
renvoie 0
malgré le casting réussi à la fois en int et en argent. Inversement ISNUMERIC(N'8')
renvoie 1
mais ne lance pas avec succès tout ce que j'ai essayé.
Certaines fonctions d'assistance utiles pour cela sont ici IsNumeric, IsInt, IsNumber.
SQL Server 2012 a introduit TRY_PARSE
et TRY_CONVERT
qui aident grandement à cela.