Maison >base de données >tutoriel mysql >Comment puis-je générer une plage de nombres en SQL en utilisant uniquement des requêtes ?

Comment puis-je générer une plage de nombres en SQL en utilisant uniquement des requêtes ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-20 03:16:13614parcourir

How Can I Generate a Range of Numbers in SQL Using Only Queries?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn