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 これは非常に役立ちます。