Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je remplir une colonne avec des nombres aléatoires en SQL ? J'obtiens la même valeur dans chaque ligne

Au lieu de rand() , utilisez newid() , qui est recalculé pour chaque ligne du résultat. La manière habituelle est d'utiliser le modulo de la somme de contrôle. Notez que checksum(newid()) peut produire -2 147 483 648 et provoquer un débordement d'entier sur abs() , nous devons donc utiliser modulo sur la valeur de retour de la somme de contrôle avant de la convertir en valeur absolue.

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

Cela génère un nombre aléatoire entre 0 et 9999.