См. 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
, которые сильно помогают в этом.