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

Pourquoi ISNUMERIC('.') renvoie-t-il 1 ?

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.