IsNumeric()が壊れていますか?を参照してください。ある程度まで。
SELECT CAST('.' AS MONEY)
0.00
を返します (ただし、int
のキャストは失敗します およびfloat
)
ISNUMERIC
一般的に役に立たない数値データ型のいずれかに値をキャストできることを確認するだけです。通常、特定のタイプにキャストできるかどうかを知りたいと思います。
さらに、すべての可能な入力に対してそのタスクを正しく実行していないようです。ISNUMERIC(' ')
0
を返します intとmoneyの両方にうまくキャストしたにもかかわらず。逆に、ISNUMERIC(N'8')
1
を返します しかし、私が試したものにはうまくキャストできません。
そのためのいくつかの便利なヘルパー関数は、IsNumeric、IsInt、IsNumberです。
SQLServer2012ではTRY_PARSE
が導入されました およびTRY_CONVERT
これは非常に役立ちます。