![](/img/trans.png)
[英]Arithmetic overflow error converting varchar to data type numeric -error
[英]Arithmetic overflow error converting numeric to data type varchar
所以,这是我的查询:
SELECT '$'
+ CONVERT(VARCHAR (6), Cast(Avg(TotalPrice) AS NUMERIC (6, 2))) AS 'Average Price',
'$'
+ CONVERT(VARCHAR (6), Cast(Min(TotalPrice) AS NUMERIC (6, 2))) AS 'Minimum Price',
'$'
+ CONVERT(VARCHAR (6), Cast(Max(TotalPrice) AS NUMERIC (6, 2))) AS 'Maximum Price'
FROM Invoice;
AVG列和MIN列工作正常,但MAX列返回:
“将数字转换为数据类型varchar的算术溢出错误”
而且我不确定为什么会收到错误消息。
尝试这个
SELECT '$'
+ CONVERT(VARCHAR (10), Cast(Avg(TotalPrice) AS NUMERIC (8, 2))) AS 'Average Price',
'$'
+ CONVERT(VARCHAR (10), Cast(Min(TotalPrice) AS NUMERIC (8, 2))) AS 'Minimum Price',
'$'
+ CONVERT(VARCHAR (10), Cast(Max(TotalPrice) AS NUMERIC (8, 2))) AS 'Maximum Price'
FROM Invoice;
您的问题是'Numeric(6,2)'最多包含6位数字,加上一个小数点(或逗号,具体取决于您所在的位置)。 因此,您需要使用'VARCHAR(7)'而不是6来满足此要求。
NUMERIC(6,2)表示总共6位数字,其中2位是小数位。
你有一个像1234.66的值,那么总字符数是7
获取最大值并使用适当的varchar大小,这里您需要至少varchar(7)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.