GENERATE MULTI RANDOM DATA
隨機產生 N 筆資料
DECLARE @TotolPerson3Rows INT;--這個值是設定要產生多少筆資料
DECLARE @Person3Count INT;--迴圈內的 Index 做累加
SET @TotolPerson3Rows = 20;--要產生 20 筆資料
SET @Person3Count = 1;-- 從 1 開始
--for 隨機產生薪資用
DECLARE @RandomSalary INT;
DECLARE @RandomSalary_Max INT;--設定薪資的最高範圍
DECLARE @RandomSalary_Min INT;--設定薪資的最低範圍
SET @RandomSalary_Min = 1;
SET @RandomSalary_Max = 100000;
--for 隨機產生 DateTime 用
DECLARE @RandomRegisteredDateTime DATETIME;
DECLARE @DateFrom DATETIME = '2012-01-01';
DECLARE @DateTo DATETIME = '2017-06-30';
DECLARE @DaysRandom INT= 0;
DECLARE @MillisRandom INT= 0;--時分秒
WHILE ( @Person3Count <= @TotolPerson3Rows )
BEGIN
--隨機產生 Salary
--RAND() 是可以隨機產生 0 <= x < 1 的數字
SELECT @RandomSalary = FLOOR(RAND() * ( @RandomSalary_Max - @RandomSalary_Min ) + @RandomSalary_Min);
--隨機產生 DateTime
--DATEDIFF() 是算兩個日期相距的天數
--ROUND() 是四捨五入,需傳兩個參數進去()內,第一個是數值,第二個是想要四捨五入到第幾位,0表示四捨五入到個位數,1代表四捨五入到小數第一位,-1代表四捨五入到十分位
SELECT @DaysRandom = DATEDIFF(DAY, @DateFrom, @DateTo);
SELECT @DaysRandom = ROUND(( ( @DaysRandom - 1 ) * RAND() ), 0);
SELECT @MillisRandom = ROUND(( ( 99999999 ) * RAND() ), 0);
SELECT @RandomRegisteredDateTime = DATEADD(DAY, @DaysRandom, @DateFrom);
SELECT @RandomRegisteredDateTime = DATEADD(MILLISECOND, @MillisRandom, @RandomRegisteredDateTime);
INSERT INTO [TABLE]
VALUES ( CONVERT(NVARCHAR, @Person3Count)--第一個欄位 NVARCHAR 型態
, CONVERT(NVARCHAR, @RandomSalary)--第二個欄位為 NVARCHAR 型態
, @RandomRegisteredDateTime --第三個欄位為 DateTime 型態
);
PRINT @Person3Count;
SET @Person3Count += 1;
END;
GO