mssql sqlserver isnumeric函数使用注意事项


摘要:
下面讲述sqlserver isnumeric函数使用注意事项,如下所示:
实验环境:sql server 2008 R2



isnumeric函数功能说明

isnumeric检测字符串是否为一个有效的数值表达式。
在对字符串进行转换前,我们可以使用此函数检测字符串是否为有效的数值表达式,
如果为有效的数值表达式,则返回1,反之则返回0

isnumeric 常见用法

  select isnumeric(89),isnumeric('2D82')

从以上的转换我们发现,两者都返回1,但是2D82我们看着不像一个数值类型,那么为什么返回1
出现这种异常的原因为:

因为D或E表示科学计数法,而isnumeric检测数据的原理,是将传入的字符串转换为数值类型,如果能转换成功,则返回1
例:
字符串中包含 + – d e $ ¥等都可以检测成功,并返回1

例:以下的表达式,sqlserver都认为是一个符合条件的数学表达式

  SELECT ISNUMERIC('2d2'),
         ISNUMERIC('2D3'),
		 ISNUMERIC('2e+2'),
         ISNUMERIC('$233')

mssql_sqlserver_isnumeric_注意事项

mssql_sqlserver_isnumeric_注意事项


isnumeric注意事项:

由于isnumeric的本质是讲述传入的字符串转换为float类型是否成功,作为判断标志
如果可通过cast转换成功,则返回1,否则返回0
—————–
即:
isnumeric是一个数值类型转换float类型前的判断,如果我们用于int类型判断时,需特别注意,避免出现异常bug