sql - 如何解决sql server中的 "Arithmetic overflow error converting varchar to data type numeric"错误?

标签 sql sql-server t-sql

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

Arithmetic overflow error converting varchar to data type numeric.

这是我的查询

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 是数字数据类型。

最佳答案

试试这个:

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
总的来说,这对我来说看起来像是一个草率的查询,但如果没有更多解释你想要做什么、你希望结果是什么样子以及你的表是什么样子,我就无法改进它。另外,您不使用联接有什么原因吗?

关于sql - 如何解决sql server中的 "Arithmetic overflow error converting varchar to data type numeric"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39444981/

相关文章:

sql - 当谈到编写 SQL 查询时,当今流行什么 : UPPER CASE or Lower Case?

sql - ORDER BY 几列中的 CASE

sql - 在 SQL Postgres 中获取 '/' 字符后的字符串

sql - 如何找出 SQL 2000/2005 中可用的排序规则

sql - 检查约束自定义消息

SQL Server - 连接 VARCHAR 和 INT 的更好方法

sql-server - Sql Server 2005 身份列上的主键冲突

mysql - 在不影响 MariaDB 中的 AUTO_INCREMENT 的情况下在表中插入行

sql - oracle中的区间函数

c# - 存储过程需要一个我已经传入的参数