我的sql server表列名为“Subject。”。
UPDATE mytable SET SUBJECT=HASHBYTES('SHA1',SUBJECT)from mytable
上面的查询在主题列中散列整行......
0x0431A163506AE958501A2AA30FA12513C3CE599A
0x0431A163506AE958501A2AA30FA12513C3CE599A
0x0431A163506AE958501A2AA30FA12513C3CE599A
主题列中的每个记录的输出行值都相同。
我需要读取每一行并对其进行散列并更新而不是基于coloumn的散列。我怎样才能做到这一点。
0x0431A163506AE958501A2AA30FA12513C3CE599A
0x0431A163506AE958501A2AA30FA12513C3CE593D
0x0431A163506AE958501A2AA30FA12513C3CE592F
答案 0 :(得分:0)
这假设您的主键名为subjectID。
DECLARE @currentKEY INT
DECLARE @maxKey INT
SELECT @currentKey = MIN(subjectID), @maxKey = MAX(subjectID) FROM mytable
WHILE @currentKey <= @maxKEY
BEGIN
UPDATE myTable
SET SUBJECT = HASHBYTES('SHA1', SUBJECT)
WHERE subjectID = @currentKEY
SELECT @currentKey = MIN(subjectID) FROM mytable WHERE subjectID > @currentKey
END
如果你想把它作为光标,我也可以告诉你如何做到这一点。