You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL UPDATE提示更新成功但未修改值,求排查语句及计算问题

问题排查与解决

核心原因:整数除法导致计算结果为0

SQL中两个整数执行除法时会自动取整。你的公式里3 / 100的两个操作数都是整数,计算结果为0,导致更新逻辑实际变成:

SettlementAmount = CollectionAmount - (CollectionAmount * 0)

也就是最终赋值结果和原数值完全一致,所以虽然语句匹配到2行并执行了赋值操作,但数据看起来没有变化。

修复方案

将除法中的任意一个操作数改为浮点数,触发浮点除法计算:

UPDATE [dbo].[QuoteOptions] 
SET SettlementAmount = CollectionAmount - (CollectionAmount * (3.0 / 100)) 
FROM [dbo].[Quotes]
JOIN [dbo].[QuoteOptions] ON [dbo].[Quotes].Id = [dbo].[QuoteOptions].QuoteId
WHERE [dbo].[Quotes].PaymentProfileId = 43 
  AND SettlementAmount = CollectionAmount

也可以直接用0.03替代3/100,简化计算逻辑:

UPDATE [dbo].[QuoteOptions] 
SET SettlementAmount = CollectionAmount * 0.97 
FROM [dbo].[Quotes]
JOIN [dbo].[QuoteOptions] ON [dbo].[Quotes].Id = [dbo].[QuoteOptions].QuoteId
WHERE [dbo].[Quotes].PaymentProfileId = 43 
  AND SettlementAmount = CollectionAmount

验证效果

以你提供的测试数据(CollectionAmount=100)为例:
修复后3.0/100=0.03,计算得100 - (100*0.03)=97,最终SettlementAmount会被更新为97,符合预期。

内容的提问来源于stack exchange,提问作者csharper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:45:42