【发布时间】:2011-08-20 05:41:37
【问题描述】:
我正在尝试从 decimal(10,2) 更新 numeric(5,2) 类型的列,但该列仍然为空,并且我没有错误消息。
DECLARE @newDurationAsDec decimal(10,2)
DECLARE @newDurationAsNum numeric(5,2)
--@newDurationAsDec is set by some logic from another table and holds the correct value e.g 2.00
set @newDurationAsNum = CAST(@newDurationAsDec AS numeric(5,2))
--selecting @newDurationAsNum contains the correct value e.g. 2.00
UPDATE table
SET Duration = @newDurationAsNum
WHERE ID = @ID AND
Duration IS NULL AND
OtherColumn = 'T'
不会重传任何错误,也不会更新列。将更新更改为选择会返回正确的行。有人可以指出我的错误吗? 提前致谢。
【问题讨论】:
-
@id的值是多少?您确定有匹配的记录吗? -
Duration IS NULL AND OtherColumn = 'T' => 也许这些条件不满足?
-
您确定
WHERE子句中的过滤器与现有行匹配吗?尝试使用相同的参数运行 select 语句。 -
使用相同参数运行 select 语句会返回正确的行
-
@5n0u7 - 你有什么触发器吗?
标签: sql sql-server casting