Maison >base de données >tutoriel mysql >Comment générer une plage de nombres en SQL entre des paramètres spécifiés ?

Comment générer une plage de nombres en SQL entre des paramètres spécifiés ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-20 03:21:10225parcourir

How to Generate a Range of Numbers in SQL Between Specified Parameters?

Génération de séries de nombres séquentiels en SQL

Cet article montre comment générer une séquence de nombres dans une plage spécifiée en SQL. Imaginez avoir besoin d'une liste de nombres de 1 000 à 1 050, chacun sur une ligne distincte.

Méthode 1 : VALEURS et jointures croisées

Une technique utilise la clause VALUES pour créer des ensembles de nombres temporaires et les combine via des jointures croisées.

<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>

Cela génère les nombres 0-9999. L'ajustement de la clause VALUES limite la sortie à la plage souhaitée.

Méthode 2 : Tableaux de chiffres individuels

Une approche plus explicite utilise des tableaux séparés pour les unités, les dizaines, les centaines et les milliers de places.

<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>

Cela offre un contrôle précis sur le processus de génération de numéros et est facilement évolutif pour des plages plus larges. Les deux méthodes offrent des solutions flexibles pour créer des séquences numériques en SQL, adaptables à différents besoins.

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