为什么SQL中的以下查询返回true??我认为它是假的,因为它不能转换为int或数字值。
select ISNUMERIC(',')
返回1?
select ISNUMERIC('0,1,2')
select ISNUMERIC(',,,')还返回1
在SQL?中,我能为严格的数字检查做些什么?
发布于 2014-06-05 07:09:23
因为ISNUMERIC回答了一个没人想问的问题:
该给定字符串能否转换为Server的任何数值数据类型?我不在乎这些类型中的哪一种可以或不能被转换成哪一种。
这就是为什么TRY_CONVERT最终被引入到2012年-来回答一个关于您可能关心的特定数据类型的问题。
对于早期版本,最好的方法是使用LIKE来识别您想要转换的字符串模式。
例如,如果您只想检测数字,请使用Value NOT LIKE '%[^0-9]%',它要求不包含任何非数字字符的Value字符串。
发布于 2014-06-05 07:09:45
如果字符串可以转换为任何一个ints、数字/十进制、浮点数或货币,则ISNUMERIC返回1。在这种情况下,转换',.‘要成功并返回0.0000,则ISNUMERIC返回1。
我们现在添加了一个名为
TRY_CONVERT的新标量函数,它允许您使用可选样式从字符串转换为类型。如果转换失败,则返回NULL。该职能的签名如下: TRY_CONVERT(data_type(长度),表达式,风格)
发布于 2014-06-05 07:08:40
http://msdn.microsoft.com/en-us/library/ms186272.aspx
微软:“这不是一个bug,而是一个特性”
某些货币和数学符号在ISNUMERIC上返回1。
https://stackoverflow.com/questions/24053613
复制相似问题