我需要使用随机整数值更新Auftrag
表中的记录
UPDATE Auftrag SET Dauer = ((CHECKSUM(NEWID()) % 10)+0.5), Anfahrt = ((CHECKSUM(NEWID()) % 70)+1), Beschreibung= 'Auto filled' WHERE Dauer IS NULL AND MitID IS NOT NULL
但是为什么我在Dauer
和Anfahrt
上也得到负值,我该如何解决?
答案 0 :(得分:0)
您可以使用checksum(...)
函数返回abs()
的绝对值:
UPDATE Auftrag SET
Dauer = ABS(CHECKSUM(NEWID())) % 10 + 0.5,
Anfahrt = ABS(((CHECKSUM(NEWID())) % 70 + 1,
Beschreibung= 'Auto filled'
WHERE
Dauer IS NULL
AND MitID IS NOT NULL
我删除了不必要的括号,因为操作顺序在这里得到解决。
答案 1 :(得分:0)
我通常将函数包装在rand()
中:
UPDATE Auftrag
SET Dauer = floor(rand(checksum(newid())) * 10) + 0.5,
Anfahrt = floor(rand(checksum(newid())) * 70) + 1,
Beschreibung= 'Auto filled'
WHERE Dauer IS NULL AND MitID IS NOT NULL;