2016-03-20 6 views
2

Ich habe zwei neue Spalten in einer meiner Datenbank-Tabelle hinzugefügt. Sie heißen Prüfungs- und Zuordnungsergebnisse.Wie erzeuge ich Zufallszahlen, um leere Zeilen zu füllen?

This is the table

Im Moment sind die beiden Säulen beide leer. Ich möchte, dass sie mit zufälligen Untersuchungsergebnissen gefüllt werden, aber nicht größer als 100. Wie erstelle ich Zufallszahlen für beide Spalten von 0 bis 100?

Danke.

Antwort

3

Sie können diese mit rand(), Prüfsumme tun() , and newid() `:

update t 
    set exam = rand(checksum(newid())) * 101, 
     assignment = rand(checksum(newid())) * 101; 

In SQL Server, rand() (im Wesentlichen) einmal für eine Abfrage bezeichnet wird. Um das zu umgehen, kannst du ihm einen neuen Samen geben. Sie können auch andere Spalten in jeder Zeile als Startwert verwenden, wenn Sie reproduzierbare Ergebnisse wünschen.

+0

Sorry, nicht sehr erfahren mit SQL oder Datenbanken, aber ich würde annehmen, dass die t bedeutet den Tabellennamen und die Prüfung und Zuordnung der Spaltennamen? – Matt

+0

Hi, vergiss es, es hat funktioniert! Meine Felder sind jetzt mit Zufallszahlen gefüllt, danke! – Matt

0

Sie können über den folgenden Ausdruck (beispielsweise als Spalte) Zufallszahlen erzeugen, die von 0..100 (einschließlich):

ABS(CAST(CAST(NEWID() AS BINARY(8)) as bigint))%101 

Die RAND() Funktion ohne Samen nicht wie hier erwartet funktioniert, weil es Wird nur einmal pro Abfrage aufgerufen, und Sie erhalten eine Zufallszahl, die wiederholt wird.

+0

@Squirrel Ich würde es auch gerne wissen! :) Ich denke, die Information, dass 'RAND()' nicht wie erwartet funktioniert - versuche 'SELECT RAND() rnd, * FROM SYS.ALL_OBJECTS' um zu sehen, was ich meine - an sich sollte schon wertvoll sein, und es ist korrekt . – Lucero

+0

Ihre Abfrage sieht gut für mich aus. – Squirrel

Verwandte Themen