我试图通过创建两个新的列值来更新SQL表:一个惟一Id,然后是刚刚创建的唯一id的缩短整数版本。
使用我找到的这里 (请参阅底部的“NEWID()方式”)的一个技巧,我认为这是可行的:
Update Customer Set [UniqueId] = NEWID(), [UniqueIntegerId] = ABS(CAST(CAST([UniqueId] AS VARBINARY) AS INT))但这会产生类似于
UniqueId
3C79.5A4DEB2 754988032
1FD6.828B943 754988032
1F48...E80F511 754988032 <--重复!不想要!
什么语法是正确的,试图做到这一点?
发布于 2011-10-19 20:25:40
这不能像预期的那样工作,因为表达式中的[UniqueId]是在更新之前计算为值的。相反,你可以尝试这样做:
DECLARE @uid uniqueidentifier;
UPDATE Customer
SET
@uid = [UniqueId] = NEWID(),
[UniqueIntegerId] = ABS(CAST(CAST(@uid AS VARBINARY) AS INT))@uid变量被赋予与[UniqueId]相同的值,然后在另一列的表达式中使用而不是[UniqueId]。
https://stackoverflow.com/questions/7826831
复制相似问题