PDA

View Full Version : تولید عدد تصادفی و ویرایش تمامی رکوردها



mehr_83
سه شنبه 21 شهریور 1391, 23:36 عصر
با سلام
من یک جدول دارم با حدود 500 رکورد. می خوام در SQL Server یک کوئری بنویسم که یکی از فیلدهای جدول (همه رکوردها ) را ویرایش کنه و در این فیلد برای هر رکورد یک عدد تصادفی غیرتکراری ( فقط عددی حداکثر 8 رقمی ) تولید و ویرایش کند.
ممنون میشم کمکم کنید.

ali ghaemi
چهارشنبه 22 شهریور 1391, 12:17 عصر
DECLARE @Random INT;
DECLARE @Upper INT;
DECLARE @Lower INT

---- This will create a random number between 1 and 1000
SET @Lower = 1 ---- The lowest random number
SET @Upper = 1000 ---- The highest random number
SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random

mehr_83
چهارشنبه 22 شهریور 1391, 17:28 عصر
ممنون. حالا برای ویرایشش چه کدی باید بنویسم. می خوام برای هر تعداد رکوردی که در جدول دارم عدد تصادفی تولید بشه و فیلد تمامی رکوردها با این اعداد تصادفی ویرایش بشه
Update tb set filed1=@random
همه فیلدها رو با یک عدد ویرایش می کنه
من میخوام هر رکورد با یک عدد تصادفی جدید ویرایش بشه.

کامروا
چهارشنبه 22 شهریور 1391, 17:47 عصر
باید با Cursor این کار رو انجام بدید. جون نیاز دارید که روی تک تک فیلد های انتخابی عملیات ویرایش رو انجام بدید.
کلمه Cursor رو جستجو کنید.

mehr_83
چهارشنبه 22 شهریور 1391, 23:18 عصر
کمی سخته. یه نمونه کد میزارید؟

pashna
پنج شنبه 23 شهریور 1391, 10:28 صبح
UPDATE [Table]
SET Filed= ABS(LEFT(CONVERT(INT,CONVERT(VARBINARY,NEWID())),8 ))

mehr_83
پنج شنبه 23 شهریور 1391, 12:21 عصر
UPDATE [Table]
SET Filed= ABS(LEFT(CONVERT(INT,CONVERT(VARBINARY,NEWID())),8 ))

ممنون. اما اگر بخوام این کد فقط عددی 5 رقمی تولید کنه چیکار باید بکنم؟ میخوام تعداد رقم های رکوردها یکی باشه.

pashna
پنج شنبه 23 شهریور 1391, 19:27 عصر
سلام، فقط کافیه ۸ رو به ۵ تغییر بدید

mehr_83
پنج شنبه 23 شهریور 1391, 21:00 عصر
سلام، فقط کافیه ۸ رو به ۵ تغییر بدید

من میخوام فقط عددی 5 رقمی تولید بشه. در این مدل حداکثر 5 رقم تولید میشه. ممکنه اعداد دو یا سه رقمی نیز تولید بشن.
کد بالایی رو اگه بشه به این کد تعمیم داد عالی میشه. چون در آنصورت میتونیم محدوده اعداد رو هم مشخص کنم.

Felony
پنج شنبه 23 شهریور 1391, 21:36 عصر
من میخوام فقط عددی 5 رقمی تولید بشه. در این مدل حداکثر 5 رقم تولید میشه. ممکنه اعداد دو یا سه رقمی نیز تولید بشن.
کد بالایی رو اگه بشه به این کد تعمیم داد عالی میشه. چون در آنصورت میتونیم محدوده اعداد رو هم مشخص کنم.
SELECT RIGHT('00000' + CAST(ABS(CHECKSUM(NEWID())) AS varchar(10)), 5) AS RndValue


باید با Cursor این کار رو انجام بدید. جون نیاز دارید که روی تک تک فیلد های انتخابی عملیات ویرایش رو انجام بدید.
کلمه Cursor رو جستجو کنید.
!

pashna
پنج شنبه 23 شهریور 1391, 21:53 عصر
UPDATE [Table]
SET Filed= LEFT(ABS(CONVERT(INT, CONVERT(VARBINARY, NEWID()))), 5)

mehr_83
پنج شنبه 23 شهریور 1391, 22:11 عصر
SELECT RIGHT('00000' + CAST(ABS(CHECKSUM(NEWID())) AS varchar(10)), 5) AS RndValue


!

ممنون حل شد.