خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
نحوه تولید اعداد تصادفی تکراری و غیر تکراری در SQL Server
تابع RAND، در تولید اعداد تصادفی در SQL Server می تواند مورد استفاده برنامه نویسان قرار بگیرد. RAND روشی آسان برای تولید اعداد تصادفی است. اگر RAND در یک کوئری Select استفاده کنید، خواهید دید که در برخی ردیف ها اعداد تصادفی تکراری وجود دارد.
مثلا به تصویر زیر دفت کنید:
مطمئنا شما چنین چیزی نمی خواهید. شما نمی خواهید که در ردیف ها اعداد تصادفی تکراری داشته باشید. اگر خواستار چنین چزی باشید حرفی نیست ولی اگر اعداد تصادفی تکراری نمی خواهید، به سادگی اینکار شدنی است. راهی برای تولید اعداد تصادفی جداگانه و غیرتکراری برای هر ردیف با استفاده از NEWID وجود دارد.
NEWID یک شناسه یا unique identifie شانزده بایتی است که در این شرایط می تواند برای شما مفید باشد. ممکن است در غالب اعداد صحیح یا integer به عدد تصادفی غیر تکراری نیاز داشته باشید و یا حتی ممکن است بین دو عدد صحیح به اعداد تصادفی احتیاج داشته باشید. در این حالت ، شما می توانید NEWID را CAST کنید و یک فرمول را برای به دست آوردن یک عدد صحیح تصادفی اعمال کنید. در ادامه نحوه استفاده و یک مثال برای تولید اعداد تصادفی بین دو عدد صحیح(مثلا بین 100 تا 200) با استفاده از NEWID است. Syntax استفاده از دستور به صورت زیر می باشد.
مثلا در اسکریپت زیر که با توجه به Syntax فوق می باشد. اعداد تصادفی بین 70 تا 100 تولید شده است.
مثلا به تصویر زیر دفت کنید:
مطمئنا شما چنین چیزی نمی خواهید. شما نمی خواهید که در ردیف ها اعداد تصادفی تکراری داشته باشید. اگر خواستار چنین چزی باشید حرفی نیست ولی اگر اعداد تصادفی تکراری نمی خواهید، به سادگی اینکار شدنی است. راهی برای تولید اعداد تصادفی جداگانه و غیرتکراری برای هر ردیف با استفاده از NEWID وجود دارد.
NEWID یک شناسه یا unique identifie شانزده بایتی است که در این شرایط می تواند برای شما مفید باشد. ممکن است در غالب اعداد صحیح یا integer به عدد تصادفی غیر تکراری نیاز داشته باشید و یا حتی ممکن است بین دو عدد صحیح به اعداد تصادفی احتیاج داشته باشید. در این حالت ، شما می توانید NEWID را CAST کنید و یک فرمول را برای به دست آوردن یک عدد صحیح تصادفی اعمال کنید. در ادامه نحوه استفاده و یک مثال برای تولید اعداد تصادفی بین دو عدد صحیح(مثلا بین 100 تا 200) با استفاده از NEWID است. Syntax استفاده از دستور به صورت زیر می باشد.
ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT)) % (@B - @A + 1) + @A
Where:
A = The smallest number of the range.
B = The largest number of the range.
مثلا در اسکریپت زیر که با توجه به Syntax فوق می باشد. اعداد تصادفی بین 70 تا 100 تولید شده است.
Use WideWorldImporters;
DECLARE @A INT;
DECLARE @B INT;
SET @A = 70
SET @B = 100
SELECT Top 15
ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT))
% (@B - @A + 1) + @A AS Random_Number,
* from Sales.Orders;
GO
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: