Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Hasilkan angka acak unik menggunakan SQL

Saya kira Anda bisa melakukan sesuatu seperti ini dengan lebih sederhana dan lebih mudah

DECLARE @Upper INT;
DECLARE @Lower INT;
SET @Lower = 1;     /* -- The lowest random number */
SET @Upper = 49;    /* -- The highest random number */
    
    
SELECT @Lower + CONVERT(INT, (@[email protected]+1)*RAND());

Untuk mendapatkan nomor acak tanpa pengulangan, ini akan berhasil

WITH CTE 
AS
(
    SELECT  randomNumber, COUNT(1) countOfRandomNumber
    FROM (
    SELECT ABS(CAST(NEWID() AS binary(6)) %49) + 1 randomNumber
    FROM sysobjects
    ) sample
    GROUP BY randomNumber
)
SELECT TOP 5 randomNumber
FROM CTE
ORDER BY newid() 

Untuk menetapkan batas tertinggi, Anda dapat mengganti 49 dengan nomor batas tertinggi Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parameter tanggal multi-nilai dalam prosedur tersimpan?

  2. Putar menggunakan SQL Server 2000

  3. SQL Pivot dengan banyak kolom

  4. Cara mendapatkan Nilai Sebelumnya untuk Nilai Null

  5. Apa cara terbaik untuk mengambil catatan secara batch dari SQL Server