En hjälpsam redaktör lade till "Select" före varje påstående, men poängen med detta objekt är att det kan generera unika nycklar för varje rad i en retur, inte bara ett objekt (för det skulle jag använda Rand()-funktionen). :Välj topp 100 Rand(),* från tblExample
Skulle returnera samma slumpmässiga värde för alla 100 rader.
While:Välj topp 100 ABS(CHECKSUM(NEWID()) % 10),* från tbleexample
Skulle returnera ett annat slumpmässigt värde mellan 0 och 9 på varje rad i returen. Så även om select gör det lättare att kopiera och klistra in, kan du kopiera logiken till en select-sats om det är vad som krävs.
Detta genererar ett slumptal mellan 0-9
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 till 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 till 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
Dynamisk (Baserat på Eilert Hjelmeseths kommentar, uppdaterad för att fixa bugg( + till -))
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
Uppdaterad baserat på kommentarer:
NEWID
genererar slumpmässig sträng (för varje rad i retur)CHECKSUM
tar värdet av strängen och skapar nummer- modul (
%
) dividerar med det numret och returnerar resten (vilket betyder att maxvärdet är en mindre än talet du använder) ABS
ändrar negativa resultat till positiva- lägg sedan till ett till resultatet för att eliminera 0 resultat (för att simulera ett tärningskast)