Вижте IsNumeric() счупен? Само до определен момент.
SELECT CAST('.' AS MONEY)
връща 0.00 (въпреки че прехвърлянето е неуспешно за int и float )
ISNUMERIC просто проверява дали стойността може да бъде прехвърлена към всеки един от числовите типове данни, което обикновено е безполезно. Обикновено искате да знаете дали може да бъде прехвърлен към конкретен тип.
Освен това изглежда дори не изпълнява тази задача правилно за всички възможни входове.. ISNUMERIC(' ') връща 0 въпреки успешното хвърляне както към int, така и към парите. Обратно ISNUMERIC(N'8') връща 1 но не прехвърля успешно към нищо, което опитах.
Някои полезни помощни функции за това са тук IsNumeric, IsInt, IsNumber.
SQL Server 2012 въведе TRY_PARSE и TRY_CONVERT които помагат много за това.