Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wygeneruj losową wartość int od 3 do 6

Pomocny edytor dodał "Wybierz" przed każdą instrukcją, ale chodzi o to, że może generować unikalne klucze dla każdego wiersza w zwrocie, a nie tylko jednego elementu (do tego użyłbym funkcji Rand()).Na przykład :Wybierz 100 najlepszych Rand(),* z tabeli tblExample

Zwróci tę samą losową wartość dla wszystkich 100 wierszy.

Podczas:Wybierz 100 najlepszych ABS(CHECKSUM(NEWID()) % 10),* z przykładu tabeli

Zwróci inną losową wartość z zakresu od 0 do 9 w każdym wierszu w zwrocie. Tak więc, chociaż wybór ułatwia kopiowanie i wklejanie, możesz skopiować logikę do instrukcji select, jeśli jest to wymagane.

To generuje losową liczbę od 0 do 9

SELECT ABS(CHECKSUM(NEWID()) % 10)

1 do 6

SELECT ABS(CHECKSUM(NEWID()) % 6) + 1

3 do 6

SELECT ABS(CHECKSUM(NEWID()) % 4) + 3

Dynamiczny (na podstawie komentarza Eilert Hjelmeseths, zaktualizowany w celu naprawienia błędu (+ do -))

SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min

Zaktualizowano na podstawie komentarzy:

  • NEWID generuje losowy ciąg (dla każdego zwracanego wiersza)
  • CHECKSUM pobiera wartość ciągu i tworzy liczbę
  • moduł (% ) dzieli przez tę liczbę i zwraca resztę (co oznacza, że ​​maksymalna wartość jest o jeden mniejsza od liczby, której używasz)
  • ABS zmienia negatywne wyniki na pozytywne
  • następnie dodaj jeden do wyniku, aby wyeliminować 0 wyników (aby zasymulować rzut kostką)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zdefiniuj kroki dla kursora SQL Server — samouczek SQL Server / TSQL

  2. Oto trzy powody, dla których możesz zauważyć szczytową aktywność w swojej instancji SQL

  3. Jak utworzyć śledzenie SQL w celu przechwytywania zdarzeń serwera SQL

  4. Odpowiednik funkcji Sleep() w SQL Server:instrukcja WAITFOR

  5. Dlaczego przesyłanie/konwertowanie z int zwraca gwiazdkę