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

CIOSOFT 劲牌公司 CTO/CIO/技术副总裁/总工程师  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 时出现算术溢出错误
是什么原因
...全文
721 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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'''
  • 打赏
  • 举报
回复
相关推荐
发帖
应用实例
加入

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2013-02-21 11:05
社区公告
暂无公告