代码之家  ›  专栏  ›  技术社区  ›  codingguy3000

SQL Server 2005 IsNumeric未捕获“0310D45”

  •  6
  • codingguy3000  · 技术社区  · 16 年前

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

    Msg 8114, Level 16, State 5, Line 3
    Error converting data type varchar to bigint.
    

    最简单的方法是什么。我想用charindex,但我要检查所有26个字母。

    谢谢

    3 回复  |  直到 16 年前
        1
  •  9
  •   Paul Sasik    11 年前

    看看这篇名为 What is wrong with IsNumeric()? 其中包含以下摘要:

    T-SQL的ISNUMERIC()函数有问题。它可以错误地解释 (CHAR(9))作为数字。

    不幸的是,IsNumeric看起来很奇怪,您必须编写几行T-SQL才能绕过它(由 奇怪的 我的意思是,如果所计算的数据可以转换成任何数字类型,那么它将被转换。)

        2
  •  4
  •   aafno    11 年前

    第一种解决方案是使用正则表达式和SQLServer函数PATINDEX()

    IF PATINDEX('%[^0-9]%', @testString) = 0
    

    IF (ISNUMERIC (@testString + 'e0') = 1)
    

    希望这有帮助

        3
  •  2
  •   Community Mohan Dere    9 年前

    看看这个 SO question 对于SQL Server ISNUMERIC()的几个备选建议。

    Erland has this as a connect item 在他的愿望清单上也有-他所调用的东西是\u valid\u convert()。

    推荐文章