【问题标题】:SQL Server 2012 Error converting data type varchar to numericSQL Server 2012 将数据类型 varchar 转换为数字时出错
【发布时间】:2016-06-01 08:07:04
【问题描述】:

我有一个非常大的视图,它使用了许多表和其他视图。当我从这个大视图中选择 * 时,我得到一个错误

将数据类型 varchar 转换为数字时出错

问题是我不知道它到底发生在哪里。我是否必须深入研究所有涉及的对象,或者有办法知道问题到底出在哪里?

【问题讨论】:

  • 必须有 UNIONJOINCASE 表达式导致该错误。不幸的是,你没有简单的方法来指出它。我建议您发布 VIEW 定义。
  • 您可以编写视图并运行它吗?它可能会将您指向导致问题的代码行。不然能不能查看一下预估的执行计划?这个问题听起来像是在某个地方的连接,因为它试图将 varchar 与数字字段进行比较并尝试转换 varchar 并失败。
  • @RichBenner 我做到了,但它没有指向线,这让我觉得它在连接的对象之一中。
  • 发布您在视图中使用的 SQL
  • 按顺序删除你的连接,看看它什么时候开始工作,一旦你知道哪个子视图坏了,然后对那个视图做同样的事情,直到你找到答案。

标签: sql sql-server sql-server-2012


【解决方案1】:

获取视图的定义,并将其制成 SELECT 语句。然后删除一半的列并运行它,继续删除列直到问题消失。如果它消失了,则将它们添加回来,直到找到问题为止。 如果它没有消失,则问题出在连接中。

【讨论】:

    【解决方案2】:

    也可以是这样的函数:

    declare @pippo numeric
    set @pippo=null
    select ISNULL(@pippo, 'x')
    

    这会引发同样的转换错误

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多