【问题标题】:How to solve "Arithmetic overflow error converting varchar to data type numeric" error in sql server?如何解决sql server中的“将varchar转换为数据类型数字的算术溢出错误”错误?
【发布时间】:2016-09-12 07:07:02
【问题描述】:

我的查询从两个表中获取数据并将它们连接起来以将输出作为单个输出。子查询工作没有任何错误。但是当我运行整个查询时,我会收到这样的错误。

将 varchar 转换为数字数据类型时出现算术溢出错误。

这是我的查询

SELECT a.REF_NO + ' - '
       + (SELECT DISTINCT ( c.c_name )
          FROM   C_MASTER c,
                 A_MASTER a
          WHERE  a.c_no = c._NO) AS refer
FROM   [A_MASTER] a,
       [C_MASTER] c
WHERE  a.c_no = c._no
ORDER  BY a.REF_NO   

REF_NO 是数值数据类型。

【问题讨论】:

  • 显示示例数据和所需结果。
  • 结果应该是这样的 => 10001 - 年度比赛

标签: sql sql-server tsql


【解决方案1】:

试试这个:

select CAST(a.REF_NO AS VARCHAR(100))
        +' - '
        +(select distinct (c.c_name) from C_MASTER c, A_MASTER a
            where a.c_no=c._NO) as refer
from [A_MASTER] a, [C_MASTER] c
where a.c_no=c._no
order by a.REF_NO

总的来说,这对我来说似乎是一个草率的查询,但如果没有更多关于您正在尝试做什么、您希望您的结果是什么样子以及您的表格是什么样子的解释,我就无法改进它。另外,您不使用联接是否有原因?

【讨论】:

  • @Stam 当我这样做时,我得到一个像这样的异常“DataBinding:'System.Data.DataRowView' 不包含名为'REF_NO'的属性。”
  • @user6592730 您需要将REF_NO 作为别名添加到该列。如果您的原始查询有效,您将得到同样的错误 - 没有 REF_NO 列。
【解决方案2】:

试试下面的查询。 编写查询时使用联接而不是用逗号分隔表。

 Select  distinct  cast(a.ref_no as VARCHAR(50))+'-'+c.c_name 
 from C_MASTER c
      Join A_MASTER a
                        On a.c_no=c._NO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多