2017-08-03 72 views
1

我想用1到100(每行不同的值)隨機生成一個十進制值來更新表項的列ItemValue。每個值應該有兩個(隨機)數字。在一個範圍內使用隨機DECIMAL號碼的更新表(SQL Server)

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 

回答

3

之間可以使用RAND生成隨機數。但是有一個問題 - RAND每個查詢只執行一次,所以你所有的行都會包含相同的隨機值。您可以使用CHECKSUM(NEWID()),使其每行隨機,這樣

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

好了,但我還需要兩個隨機數字 – Riccardo

+0

對不起,錯過了它。更新我的答案:Round現在需要2作爲第二個參數,而不是0. – Max

+0

更新項目 SET itemValue = ROUND(CHECKSUM(NEWID()))*(100),2) – Sowndarya

1

你可以使用這個片段生成隨機十進制值:

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

這將產生隨機十進制數10和30

相關問題