SQLSERVER中ISNUMERIC函数的注意事项


实际应用中,我只是根据函数名顾名思义地使用它来判断字符串是否是数值类型,直到今天出现了一个BUG,将字符串21D-003的结果返回真,感到莫名其妙,然后网上搜寻ISNUMERIC函数的使用说明,才发现原来ISNUMERIC函数是用于判断字符串是否是货币类型(特殊的数值类型),字符串是含有+、-、货币符号等都会返回真。估计‘21D-003’中的D被识别为某种货币符号,所以整体结果返回真。

如果要判断某字符串是否是纯数值,有网友建议使用另一个函数:

PATINDEX('%[^0-9|.|-|+]%',字符串)=0  #这个匹配数字、正负号、小数点
PATINDEX('%[^0-9|.]%',字符串)=0 #这个匹配数字和小数点
PATINDEX('%[^0-9|.]%',字符串)=0 #这个只匹配纯数字


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM