sql >> Databáze >  >> RDS >> Sqlserver

Jak vygenerovat rozsah čísel mezi dvěma čísly?

Netrvalé hodnoty vyberte pomocí VALUES klíčové slovo. Poté použijte JOIN s ke generování spousty a spousty kombinací (lze rozšířit tak, aby vytvořily stovky tisíc řádků a více).

Krátká a rychlá verze (není tak snadno čitelná):

WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1

Ukázka

Podrobnější verze:

SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1

Ukázka

Obě verze lze snadno rozšířit pomocí WHERE klauzule, omezující výstup čísel na uživatelem zadaný rozsah. Pokud jej chcete znovu použít, můžete pro něj definovat funkci s tabulkovou hodnotou.



  1. Testování příkazů DML pro OLTP v paměti

  2. Jak nakonfigurovat Ruby on Rails s Oracle?

  3. GIS:PostGIS/PostgreSQL vs. MySql vs. SQL Server?

  4. Nastavení vývojového prostředí pro výuku PL/SQL