Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2005是数字型的,无法捕获&x27;0310D45';_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

SQL Server 2005是数字型的,无法捕获&x27;0310D45';

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封信 有没有一个我没有看到的简单解决方案?我真的不想创建一个用户定义的函数 谢谢请看这篇名为

我得到了这个值“0310D45”

在转换为bigint之前,我使用isnumeric检查值是否为数值。不幸的是,此值正在通过isnumeric检查。所以我的问题是:

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)