我需要用随机的int值更新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上也得到了负值,我如何解决这个问题呢?
发布于 2018-06-28 00:25:38
您可以使用abs()函数返回checksum(...)的绝对值:
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我删除了不必要的圆括号,因为这里的操作顺序会解决这个问题。
发布于 2018-06-28 00:26:03
我通常将函数包装在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;https://stackoverflow.com/questions/51067377
复制相似问题