使用范围内的随机DECIMAL编号更新表(SQL Server)

时间:2017-08-03 07:07:52

标签: sql-server tsql

我想更新表项的列ItemValue,其中包含在1和100之间随机生成的小数值(每行的值不同)。每个值应该有两个(随机)数字。

CREATE TABLE Items
(
    ItemID int IDENTITY(1,1) NOT NULL,
    ItemValue decimal(13, 4) NULL,
    CONSTRAINT PK_Items PRIMARY KEY CLUSTERED (ItemID ASC)
)

INSERT INTO Items(ItemValue) VALUES (0)
INSERT INTO Items(ItemValue) VALUES (0)
INSERT INTO Items(ItemValue) VALUES (0)
INSERT INTO Items(ItemValue) VALUES (0)

-- Now, I want to update the table

2 个答案:

答案 0 :(得分:11)

您可以使用 RAND 生成随机数。但是有一个问题 - RAND 每个查询只执行一次,因此所有行都将包含相同的随机值。您可以使用 CHECKSUM(NEWID())使其每行随机,例如

UPDATE items
SET itemValue = ROUND(RAND(CHECKSUM(NEWID())) * (100), 2)

答案 1 :(得分:2)

You could use this snippet to generate random decimal values:

CONVERT( DECIMAL(13, 4), 10 + (30-10)*RAND(CHECKSUM(NEWID()))

This will generate random decimal numbers between 10 and 30.