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

Jak mogę wypełnić kolumnę liczbami losowymi w SQL? Otrzymuję tę samą wartość w każdym rzędzie

Zamiast rand() , użyj newid() , która jest obliczana ponownie dla każdego wiersza w wyniku. Zwykłym sposobem jest użycie modulo sumy kontrolnej. Zauważ, że checksum(newid()) może wytworzyć -2 147 483 648 i spowodować przepełnienie liczb całkowitych w abs() , więc musimy użyć modulo na wartości zwracanej sumy kontrolnej przed konwersją na wartość bezwzględną.

UPDATE CattleProds
SET    SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE  SheepTherapy IS NULL

To generuje losową liczbę od 0 do 9999.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server SHOWPLAN_TEXT

  2. Serwer SQL *=Operator?

  3. Porównaj plany wykonania w SQL Server

  4. wybierz * z tabeli vs wybierz colA, colB, itp. z tabeli ciekawe zachowanie w SQL Server 2005

  5. Czym jest BETWEEN operator logiczny w SQL Server — samouczek SQL Server / TSQL część 124