Requête SQL pure pour générer une séquence numérique
En SQL, en utilisant des valeurs non persistantes (mot-clé VALUES) et des opérations JOIN, vous pouvez générer une séquence de nombres dans une plage spécifiée.
Solution simple :
<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>
Ce schéma génère une plage de nombres en créant un produit cartésien de quatre valeurs représentant les unités, les dizaines, les centaines et les milliers. La fonction ROW_NUMBER() attribue des numéros de ligne uniques dans l'ordre souhaité.
Plan détaillé :
<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>
Ce schéma calcule explicitement les valeurs numériques en ajoutant des valeurs en unités, dizaines, centaines et milliers de places. Les deux scénarios peuvent être étendus avec une clause WHERE pour spécifier une plage de nombres. Pour des portées plus grandes, des fonctions table peuvent être créées pour réutiliser le code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!