兰德和两个数字之间

waf*_*971 1 sql t-sql

我需要创建一些随机数据,它一直在游泳,直到我记得我的兰德函数在结果中带回0,有没有办法改变100*RAND()不包括0和3*RAND()到不包括0,我需要的是1到100之间(包括100)和另一个随机化数字1和2.

DECLARE @OrderNumber varchar (30)
DECLARE @OrderDate int
DECLARE @OrderLineNumber varchar(50)
DECLARE @CustomerSkey int
DECLARE @ProductSkey int
DECLARE @OrderMethodSkey int

SET @OrderNumber = 1
SET @OrderDate = 0
SET @OrderLineNumber = 1
SET @CustomerSkey = 1
SET @ProductSkey = 1
SET @OrderMethodSkey = 1

WHILE @OrderNumber <= 100
WHILE @OrderDate <= 100
WHILE @OrderLineNumber <= 100
WHILE @CustomerSkey <= 100
WHILE @ProductSkey <= 100
WHILE @OrderMethodSkey <= 100



BEGIN
INSERT INTO Orders 
(OrderNumber
, OrderDate
, OrderLineNumber
, CustomerSkey
, ProductSkey
, OrderMethodSkey)

SELECT 
'ORD' + Right ('000000' + CAST (@OrderNumber AS varchar (30)), 6)
,DATEADD (day, CAST (RAND () * 1500 as int), '2008-1-1')
,(Right ('0' + CAST (@OrderLineNumber AS varchar (30)), 6))
,100*RAND()
,100*RAND()
,2*RAND()

SET @OrderNumber = @OrderNumber + 1
SET @OrderDate = @OrderDate + 1
SET @OrderLineNumber = @OrderLineNumber + 1
SET @CustomerSkey = @CustomerSkey + 1
SET @ProductSkey = @ProductSkey + 1
SET @OrderMethodSkey = @OrderMethodSkey + 1

END
Run Code Online (Sandbox Code Playgroud)

Lit*_*les 5

只需将乘数减1,然后再加1:

(99 * RAND()) + 1 
Run Code Online (Sandbox Code Playgroud)

(2 * RAND()) + 1
Run Code Online (Sandbox Code Playgroud)