参数驱动数据更新逻辑错误修正及需求咨询
问题修复方案
问题根源
当前更新逻辑仅检查premi1.Text是否为空,但premi1.Text = "0"并非空值,因此逻辑会错误地优先使用premi1的0值,忽略了premi5的有效非零数值。
需求匹配逻辑
根据需求,应遵循以下优先级:
- 优先使用
premi5的值,当它非空且不为0时 - 若
premi5无效(空或为0),再使用premi1的值,当它非空且不为0时 - 若两者均无效,可默认设为0(或根据业务需求保留原数据)
修正后的SQL语句
UPDATE MY_TABLE SET Value = CASE -- 优先验证premi5的有效性 WHEN NOT String.IsNullOrEmpty(premi5.Text.Trim()) AND premi5.Text.Replace(",", "") != "0" THEN premi5.Text.Replace(",", "") -- 再验证premi1的有效性 WHEN NOT String.IsNullOrEmpty(premi1.Text.Trim()) AND premi1.Text.Replace(",", "") != "0" THEN premi1.Text.Replace(",", "") -- 两者都无效时的默认值 ELSE "0" END WHERE ID = 1
效果验证
在给定参数场景下:
premi5.Text = "10,710,000":非空,去除逗号后为"10710000"(非0),因此会被选中作为更新值- 最终
Value会被正确更新为10710000(无逗号格式)
内容的提问来源于stack exchange,提问作者Babo
相关产品推荐
相关产品推荐

