Hannes  PreishuberZufälle die keine sind in TSQL


Ich habe heute eine Methode gesucht (gebingt) um 5 stellige PINS automatisch in eine SQL Tabelle einzufügen per TSQL. Dafür brauche ich eine Zufallszahl. Es gibt eine RAND Funktion die aber mit Verlaub so ziemlich das dümmste ist was ich seit langem gesehen habe. Der erzeugte Wert liegt zwischen 0 und 1 als Gleitkommazahl.

1) ein Update tabelle set pin= RAND() erzeugt immer die gleiche Zahl. Nur wenn RAND mehrmals aufgerufen wird kommt eine unterschiedliche Zahl raus.

2) Mann kann RAND per Parameter einen Startwert mitgeben. Die Doku empfiehlt einen Datumswert

SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
           + (DATEPART(ss, GETDATE()) * 1000 )
           + DATEPART(ms, GETDATE()) )

Nur sind die Server so schnell das, mehrfach innerhalb des gleichen Zeitwertes die Rand Methode aufgerufen wird und dann ist es wieder der gleiche Zufallswert.

Demzufolge nehme ich  nun einen Feldwert um RAND zu steuern. Das Ergebnis wäre mit .NET sicher besser, aber für meine Zwecke reicht es.

UPDATE

dbo.Tabelle1 SET PIN = convert(int,RAND(feldx) * 100000)


Kategorien: SQL; 10.06.2009 08:15:32


 


Neuen Kommentar einfügen:

  Titel:   
  Name:
  E-Mail:
  Kommentar:

 
 


Kommentare




© Copyright 2008 ppedv AG