将连字符添加到Varchar值时的算术溢出

时间:2017-06-14 23:45:33

标签: sql-server sql-server-2008 tsql

我收到以下错误

  

Msg 8115,Level 16,State 6,Line 5< BR>   将varchar转换为数据类型numeric的算术溢出错误。

这是说明我的问题的示例DDL。如何设置可以实现此类的查询?

Declare @Teetotal As Table (ramalad varchar(500))

Insert Into @Teetotal (ramalad) Values ('200.4'), ('300.12')

Select ramalad
,ManipulatedData = CAST(ramalad AS DECIMAL(16,2)) + ' - ' + (CAST(ramalad As DECIMAL(10,2))/25)*3
FROM @Teetotal

1 个答案:

答案 0 :(得分:1)

这是因为您尝试将字符串添加到小数:

CAST(ramalad AS DECIMAL(16,2)) + ' - '

SQL不知道如何将' - '转换为数字,因此会引发错误。

也许你想要的是:

ManipulatedData = ramalad + ' - ' + CAST( (CAST(ramalad As DECIMAL(10,2))/25) *3 as varchar)