Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich eine Spalte mit Zufallszahlen in SQL füllen? Ich bekomme in jeder Zeile den gleichen Wert

Statt rand() , verwenden Sie newid() , die für jede Zeile im Ergebnis neu berechnet wird. Der übliche Weg ist, das Modulo der Prüfsumme zu verwenden. Beachten Sie, dass checksum(newid()) kann -2.147.483.648 erzeugen und einen ganzzahligen Überlauf bei abs() verursachen , also müssen wir Modulo auf den Rückgabewert der Prüfsumme anwenden, bevor wir ihn in einen absoluten Wert umwandeln.

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

Dadurch wird eine Zufallszahl zwischen 0 und 9999 generiert.