实际应用中,我只是根据函数名顾名思义地使用它来判断字符串是否是数值类型,直到今天出现了一个BUG,将字符串21D-003的结果返回真,感到莫名其妙,然后网上搜寻ISNUMERIC函数的使用说明,才发现原来ISNUMERIC函数是用于判断字符串是否是货币类型(特殊的数值类型),字符串是含有+、-、货币符号等都会返回真。估计‘21D-003’中的D被识别为某种货币符号,所以整体结果返回真。
如果要判断某字符串是否是纯数值,有网友建议使用另一个函数:
PATINDEX('%[^0-9|.|-|+]%',字符串)=0 #这个匹配数字、正负号、小数点
PATINDEX('%[^0-9|.]%',字符串)=0 #这个匹配数字和小数点
PATINDEX('%[^0-9|.]%',字符串)=0 #这个只匹配纯数字