Génération de plages de numéros avec SQL
Besoin de créer une séquence de nombres entre deux valeurs spécifiées (par exemple, 1000 et 1050) dans une base de données SQL ? Cet article présente des méthodes efficaces utilisant les opérations VALUES
et JOIN
.
L'idée principale est de générer un ensemble de nombres en utilisant VALUES
, puis d'utiliser JOIN
pour les combiner dans une plage plus large. Cette approche évolue facilement pour générer des centaines de milliers de lignes en élargissant la requête.
Voici une solution compacte :
<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>
Une méthode plus explicite est :
<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>
Les deux exemples peuvent être personnalisés pour générer des plages spécifiques en ajoutant une clause WHERE
. Pour une utilisation fréquente, envisagez de créer une fonction table pour la réutilisabilité.
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!