为什么ISNUMERIC('.')返回1?

Pau*_*bot 12 sql sql-server

最近,我与ISNUMERIC工作在SQL Server中,当我遇到一个问题,这导致了发现这个代码片断.

SELECT ISNUMERIC('.')
Run Code Online (Sandbox Code Playgroud)

这返回1,如同在true中一样,这不应该返回0,如false吗?

Mar*_*ith 18

IsNumeric()是否破碎?只有一点.

SELECT CAST('.' AS MONEY) 
Run Code Online (Sandbox Code Playgroud)

回报0.00(虽然剧组的失败intfloat)

ISNUMERIC只检查该值是否可以转换为任何一种通常无用的数值数据类型.通常你想知道它是否可以转换为特定类型.

此外,它似乎甚至没有正确地完成所有可能的输入任务..尽管成功投入了int和money,但仍会ISNUMERIC(' ')返回0.相反地ISNUMERIC(N'?')返回,1但没有成功地投射到我尝试的任何东西.

一些有用的辅助函数是IsNumeric,IsInt,IsNumber.

SQL Server 2012引入TRY_PARSETRY_CONVERT对此有很大帮助.

  • 究竟.考虑滑坡:"10"没问题,"10.0"没问题,"10."可以......(_启动到slide_)所以`.``应该没问题......和`.0`和..是的`.`也可以.[慷慨地输入解析](https://plus.google.com/114034641416688387662/posts/8bJZnLFxAfi)有时会有缺点. (3认同)