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

Dapatkan nilai acak dari rentang di MS SQL?

DECLARE @t TABLE
(VALUE CHAR(3))

INSERT @t
VALUES
('000'),('002'),('005'),('190')


;WITH rnCTE
AS
(
    SELECT -1 + ROW_NUMBER() OVER (ORDER BY TYPE, number, name) AS rn
    FROM master.dbo.spt_values
)
SELECT RIGHT('000' + CAST( rn AS VARCHAR(11)),3)
FROM rnCTE
WHERE NOT EXISTS    (   SELECT 1 FROM @t 
                        WHERE VALUE = rn
                    )
AND rn < 1000

EDIT

Kueri ini bekerja dengan menghasilkan daftar lengkap kemungkinan angka dari tabel sistem (master.dbo.spt_values ) yang dijamin berisi lebih dari 1000 baris di dalam rnCTE CTE . -1 ditambahkan ke ROW_NUMBER agar nilai dimulai dari 0 bukan 1.

Kueri luar nol mengisi angka untuk ditampilkan, hanya mengembalikan angka yang tidak ada dalam data sumber dan kurang dari 1000.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dasar-dasar Mengelola File Data di SQL Server

  2. SQL Server Buat Indeks Tampilan yang berisi berbeda atau dikelompokkan berdasarkan

  3. SQL Server:sys.master_files vs. sys.database_files

  4. Menghubungkan aplikasi inti ASP.NET Anda ke instance lokal SQLServer

  5. Lupa Kata Sandi SQL Server