2011-12-17 25 views
9

Chcę, aby moja funkcja generowała liczby zmiennoprzecinkowe (na przykład: -123.000, 874.000) w zakresie (od 272 do 3357) i aktualizowała każde pole rekordu o wartości "pos_x" unikalne liczby zmiennoprzecinkowe. Piszę ten kod, ale widzę, że pole mojego pola jest identyczne, a także jest liczbą całkowitą i są one dodatnie.Serwer SQL: wypełnij kolumnę z losowymi liczbami dziesiętnymi

to mój kod:

UPDATE Driver_tbl 
SET pos_x = (ROUND((RAND()* 10000),0)) 

Odpowiedz

12

RAND jest oceniany raz za zapytaniem

Można nasion to tak jakby za pomocą CHECKSUM(NEWID()) jest więc przypadkowy za rzędzie

UPDATE Driver_tbl 
SET pos_x = ROUND(RAND(CHECKSUM(NEWID())) * (3357-272),0) + 272 

Możesz jednak wyciąć środkowego mężczyznę, jeśli używasz ROUND (.. , 0)

UPDATE Driver_tbl 
SET pos_x = ABS(CHECKSUM(NEWID())) % 9999 
+0

jeśli piszę ten kod, czy potrzebuję jakiejkolwiek pętli czy coś takiego? –

+0

@rN uǝɹɐ: nie, to wszystko, czego potrzebujesz – gbn

+0

co, jeśli chcę wygenerować w zakresie? –

Powiązane problemy