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

results matching ""

    No results matching ""