SQL Server 2005是数字型的,无法捕获&x27;0310D45';
我得到了这个值“0310D45” 在转换为bigint之前,我使用isnumeric检查值是否为数值。不幸的是,此值正在通过isnumeric检查。所以我的问题是:SQL Server 2005是数字型的,无法捕获&x27;0310D45';,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我得到了这个值“0310D45” 在转换为bigint之前,我使用isnumeric检查值是否为数值。不幸的是,此值正在通过isnumeric检查。所以我的问题是: Msg 8114, Level 16, State 5, Line 3 Error converting data type varchar to bigint. 最简单的处理方法是什么。我曾考虑使用charindex,但我必须检查所有26封信 有没有一个我没有看到的简单解决方案?我真的不想创建一个用户定义的函数 谢谢请看这篇名为
Msg 8114, Level 16, State 5, Line 3
Error converting data type varchar to bigint.
最简单的处理方法是什么。我曾考虑使用charindex,但我必须检查所有26封信
有没有一个我没有看到的简单解决方案?我真的不想创建一个用户定义的函数
谢谢请看这篇名为的文章,其中包含以下摘要: 摘要:T-SQL的ISNUMERIC()函数有问题。它可以错误地解释 非数字字母和符号(如D、E和%),甚至制表符 (CHAR(9))作为数字 不幸的是,IsNumeric看起来很奇怪,您必须编写几行T-SQL才能绕过它。(我的意思是,如果所计算的数据可以转换为任何数字类型,那么它将被转换。)看看这篇文章,了解对SQL Server ISNUMERIC()的几种替代建议
我也相信在他的愿望清单上——他称之为“有效的”转换()。我最近遇到了这个问题,并在寻找解决方案。我想我找到了两个,想把它们贴在这里,这样别人就更容易找到了。 第一种解决方案是使用正则表达式和SQLServer函数PATINDEX() 第二种解决方案是将字符串“e0”连接到测试字符串,并且仍然使用SQLServer函数ISNUMERIC()和连接的字符串。由于数字格式中使用了不同的符号,ISNUMERIC无法检测是否存在d、e、x等字符,但它仍然只允许单个字符。因此,连接“e0”可以防止函数在需要时给出假true
IF (ISNUMERIC (@testString + 'e0') = 1)
希望这有帮助
IF (ISNUMERIC (@testString + 'e0') = 1)