UPDATE nvarchar导致Infinity或其他未预料到的值

时间:2012-01-19 09:03:17

标签: sql sql-server-2008 infinity

在所有更新字段为nvarchar(50)的表上运行简单更新查询时,我注意到了奇怪的行为。不时(第一个奇怪的事情是什么)而不是正确地更新值,我得到的东西看起来像是一些计算的结果。当我再次运行相同的查询时,结果就像我期望它们在那里一样。 有人以前见过它,知道任何解决方案吗? 请参阅示例:

Query:
UPDATE Tabl1 
SET [D1] = '43 / 57.43 %', [D2] = '20 / 41.18 %', [D3] = '145 / 27.50 %', 
    [D4] = '59 / 28.92 %', [D5] = '143 / 36.44 %', [D6] = '14 / 53.33 %', 
    [D7] = '0 / 0.00 %', [D8] = '424 / 37.00 %',[D9] = '0 / 0.00 %' 
WHERE [key] = 28

Result:
D1 = 100
D2 = 100
D3 = 100
D4 = Infinity
D5 = 41.67
D6 = 100
D7 = 100
D8 = Infinity
D9 = Infinity

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

这不是来自SQL Server。

SQL Server没有这样的逻辑来评估计算并返回像“Infinity”这样的字符串。

您必须在执行此重写的表上使用触发器,或者您提交查询时使用的任何内容都会重写它。