为什么ISNUMERIC(',')是真的?

Roh*_*ews 4 sql sql-server-2008

为什么SQL中的以下Query返回true?我预计它是假的,因为它无法转换为int数值或数值

select ISNUMERIC(',')

回来1???

select ISNUMERIC('0,1,2')

select ISNUMERIC(',,,')
Run Code Online (Sandbox Code Playgroud)

也回来了 1

我可以在SQL中进行严格的数字检查吗?

Dam*_*ver 6

因为ISNUMERIC回答了一个没人想过要问的问题:

这个给定的字符串是否可以转换为SQL Server的任何数字数据类型?而且我不关心它能够或不能转换成哪种类型.

这就是TRY_CONVERT最终引入2012年的原因 - 回答有关您可能关心的特定数据类型的问题.


对于早期版本,你通常可以做的最好的就是用LIKE识别您的字符串模式想尝试转换.

例如,如果您只想检测数字,请使用Value NOT LIKE '%[^0-9]%',该请求包含任何不是数字的字符的Value字符串.