2008-09-17 5 views
0

Ich habe ein neues varchar (10) -Feld in einer Datenbank mit mehr als 1000 Datensätzen. Ich möchte die Tabelle aktualisieren, damit ich zufällige Daten im Feld haben kann. Ich suche nach einer SQL-Lösung.Wie aktualisiere ich ein Feld mit zufälligen Daten?

Ich weiß, dass ich einen Cursor verwenden kann, aber das scheint unelegant.

MS-SQL 2000, BTW

Antwort

5
update MyTable Set RandomFld = CONVERT(varchar(10), NEWID()) 
+0

Mit diesem Zusatz UPDATE \t Tabelle SET-Feld = CONVERT (varchar (10), LEFT (NEWID(), 10)) –

+0

Leider haben nicht SQLServer hier laufen, so konnte ich es nicht testen. –

+0

Dies weist jedem Eintrag denselben Random-Wert zu. http://stackoverflow.com/questions/94906/how-do-i-return-random-numbers-as-a-column-in-sql-server-2005#94951 wird randomize jede Zeile und funktioniert in SQL2000 – Adam

1

Sie könnten in der Lage sein, etwas anzupassen like this einen Testdatensatz von Werten zu laden, je nachdem, was Sie suchen

0

Wenn dies eine einmalige Sache ist nur zu Holen Sie Daten in das System Ich sehe wirklich kein Problem mit einem Cursor so viel wie ich hasse Cursors sie haben ihren Platz.

1

Wenn Sie dies nur zum Testen oder für den einmaligen Gebrauch tun, würde ich sagen, dass eine elegante Lösung nicht wirklich notwendig ist.

0

Wie wäre es damit:

UPDATE TBL SET Field = LEFT(CONVERT(varchar(255), @myid),10) 
1

Warum nicht verwenden, um die ersten 10 Zeichen einer MD5-Prüfsumme des aktuellen Zeitstempel und eine Zufallszahl?

0

, wenn Sie in SQL Server sind, können Sie

CAST(RAND() as varchar(10)) 

EDIT verwenden: Dies funktioniert nur innerhalb einer Iteration arbeiten. Als Teil eines mehrzeiligen Inserts wird dasselbe RAND() - Ergebnis für jede Zeile verwendet.

1

So etwas wie (ungetestet Code):

UPDATE yourtable 
SET yourfield= CHAR(32+ROUND(RAND()*95,0)); 

Offensichtlich verketten mehr zufällige Zeichen, wenn Sie zehn Zeichen wollen nach oben. Es ist möglich, dass der Abfrageoptimierer alle Felder auf denselben Wert setzt. In diesem Fall würde ich versuchen

SET yourfield=LEFT(yourfield,0)+CHAR… 

, um den Optimierer in Neuberechnung jedes Mal den Ausdruck Trick.

Verwandte Themen