Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso riempire una colonna con numeri casuali in SQL? Ottengo lo stesso valore in ogni riga

Invece di rand() , usa newid() , che viene ricalcolato per ogni riga nel risultato. Il solito modo è usare il modulo del checksum. Nota che checksum(newid()) può produrre -2,147,483,648 e causare un overflow di numeri interi su abs() , quindi è necessario utilizzare modulo sul valore restituito del checksum prima di convertirlo in valore assoluto.

UPDATE CattleProds
SET    SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE  SheepTherapy IS NULL

Questo genera un numero casuale compreso tra 0 e 9999.