簡體   English   中英

將數字轉換為數據類型varchar的算術溢出錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM