Se IsNumeric() Broken? Kun op til et punkt.
SELECT CAST('.' AS MONEY)
returnerer 0.00
(selvom castet mislykkes for int
og float
)
ISNUMERIC
kontrollerer bare, at værdien kan castes til enhver af de numeriske datatyper, hvilket generelt er ubrugeligt. Normalt vil du gerne vide, om den kan støbes til en bestemt type.
Derudover ser det ikke engang ud til at udføre denne opgave korrekt for alle mulige input.. ISNUMERIC(' ')
returnerer 0
trods casting med succes til både int og penge. Omvendt ISNUMERIC(N'8')
returnerer 1
men kaster ikke med succes til noget, jeg prøvede.
Nogle nyttige hjælpefunktioner til det er her IsNumeric, IsInt, IsNumber.
SQL Server 2012 introducerede TRY_PARSE
og TRY_CONVERT
der hjælper meget med dette.