我有这个价值’0310D45′
我正在使用isnumeric来检查在转换为bigint之前值是否为数字.不幸的是,这个值正在通过isnumeric检查.所以我的查询没有说:
Msg 8114,Level 16,State 5,Line 3 Error converting data type varchar to bigint.
处理这个问题最简单的方法是什么.我正在考虑使用charindex,但我必须检查所有26个字母.
是否有一个我没有看到的简单解决方案?我真的不想创建用户定义的函数.
谢谢
解决方法
看看这篇名为
What is wrong with IsNumeric()?的文章,其中包含以下摘要:
Abstract: T-sql’s ISNUMERIC() function has a problem. It can falsely interpret
non-numeric letters and symbols (such as D,E,and £),and even tabs
(CHAR(9)) as numeric.
不幸的是,看起来IsNumeric看起来很奇怪,你将不得不编写几行T-sql来解决它. (奇怪的是,我的意思是,如果评估的数据可以转换为任何数字类型,它将被转换.)