报错提示:将 varchar 转换为数据类型 numeric 时出现算术溢出错误

CIOSOFT 2013-02-21 11:05:41
declare @D decimal(18, 2)
set @D=100.98
set @sql='UPDATE [dbo].[Money]
SET [Wage] = '+@D+'where [AuditStateC]=''2'''

以上语句报错:将 varchar 转换为数据类型 numeric 时出现算术溢出错误
是什么原因
...全文
1222 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DBA_磊仔 2013-02-21
  • 打赏
  • 举报
回复
decimal 的隐式转换的优先级比 varchar 类型高,所以如果不使用显示转换,会把 varchar类型转为 数字类型,这明显 'UPDATE [dbo].[Money] SET [Wage] = ' 是转不成数字的
弘恩 2013-02-21
  • 打赏
  • 举报
回复
引用 4 楼 DBA_Huangzj 的回复:
我认为convert好一点
支持
發糞塗牆 2013-02-21
  • 打赏
  • 举报
回复
但是转换会有一定的性能开销,而ltrim只是去掉左边的空格,貌似跟你的问题无关
發糞塗牆 2013-02-21
  • 打赏
  • 举报
回复
我认为convert好一点
CIOSOFT 2013-02-21
  • 打赏
  • 举报
回复
以上两种方式那个更好呢
chuifengde 2013-02-21
  • 打赏
  • 举报
回复
...+ltrim(@d)+...
szm341 2013-02-21
  • 打赏
  • 举报
回复
set @sql='UPDATE [dbo].[Money] SET [Wage] = '+convert(varchar(20),@D)+'where [AuditStateC]=''2'''

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧