Reine SQL-Abfrage zur Generierung einer numerischen Sequenz
In SQL können Sie mithilfe nicht persistenter Werte (Schlüsselwort VALUES) und JOIN-Operationen eine Zahlenfolge innerhalb eines bestimmten Bereichs generieren.
Einfache Lösung:
<code class="language-sql">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</code>
Dieses Schema generiert einen Zahlenbereich, indem ein kartesisches Produkt aus vier Werten erstellt wird, die Einheiten, Zehner, Hunderter und Tausender darstellen. Die Funktion ROW_NUMBER() weist eindeutige Zeilennummern in der gewünschten Reihenfolge zu.
Detaillierter Plan:
<code class="language-sql">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</code>
Dieses Schema berechnet numerische Werte explizit durch Addition von Werten in Einer-, Zehner-, Hunderter- und Tausenderstellen. Beide Szenarien können mit einer WHERE-Klausel erweitert werden, um einen Zahlenbereich anzugeben. Für größere Bereiche können Tabellenwertfunktionen erstellt werden, um Code wiederzuverwenden.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Zahlenbereich in SQL nur mithilfe von Abfragen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!