sql >> Database >  >> RDS >> Sqlserver

Een willekeurige waarde krijgen uit een bereik in 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

BEWERKEN

Deze query werkt door de volledige lijst met mogelijke getallen te genereren uit een systeemtabel (master.dbo.spt_values ) die gegarandeerd meer dan 1000 rijen bevat binnen de CTE rnCTE . -1 is toegevoegd aan ROW_NUMBER om de waarden te laten beginnen bij 0 in plaats van 1.

De buitenste query-nul vult de getallen voor weergave in en retourneert alleen die welke niet in de brongegevens staan ​​en kleiner zijn dan 1000.



  1. Een MySQL-query gebruiken met variabelen uit C#

  2. JFreeChart met numerieke zoekopdracht ORACLE

  3. Verbinding maken met SQL Server 2012 met behulp van sqlalchemy en pyodbc

  4. Wat is de beste manier om snel grote hoeveelheden gegevens in MySQL in te voegen?