SQL pour générer une liste de nombres de 1 à 100
À l'aide de la DOUBLE table, comment puis-je obtenir une liste des nombres de 1 à 100?
- Est-ce devoirs? Si non, l'inclusion de la nécessité de "à l'aide de la DOUBLE table" semble arbitraire et étrange pour moi.
- à l'aide de DOUBLE comme une source est une solution bien connue pour le problème de la génération de lignes, de sorte que son inclusion dans la question n'est ni arbitraire, ni étrange.
- il serait intéressant de savoir pourquoi vous voulez le faire.
- "il serait intéressant de savoir pourquoi vous voulez faire ça" - test de conversion d'unité logique, ou logique de date qui fonctionne pour toutes les heures (0-23) ou les quart d'heures (0 à 95) ou une autre test exhaustif.
Vous devez vous connecter pour publier un commentaire.
Votre question est difficile à comprendre, mais si vous voulez sélectionner les numéros de
1
à100
, alors cela devrait faire l'affaire:Une autre solution intéressante dans ORACLE PL/SQL:
Le faire à la dure. Utiliser le génial
MODEL
clause:Preuve: http://sqlfiddle.com/#!4/d41d8/20837
CV(R)
signifie? Est-il comme la valeur actuelle? ou qqch?R
, sens de la valeur sur le côté gauche de l'équation. Pour plus de détails, veuillez consulter l'OracleMODEL
livre blancSELECT V FROM dual MODEL DIMENSION BY (0 AS R) MEASURES (0 AS V) RULES ITERATE (100) (V[ITERATION_NUMBER] = ITERATION_NUMBER+1) ORDER BY 1
DBFiddle DémoLa réponse de pierre est mon préféré, trop.
Si vous êtes à la recherche pour plus de détails, il y a une assez bonne vue d'ensemble, de l'OMI, ici.
Particulièrement intéressant, c'est de lire les repères.
Si vous voulez que votre entiers à être lié entre deux nombres entiers (c'est à dire commencer avec quelque chose d'autre que 1), vous pouvez utiliser quelque chose comme ceci:
Il donne:
À l'aide d'Oracle sous requête de l'usine de la clause: "AVEC", vous pouvez choisir un nombre de 1 à 100:
Vous pouvez utiliser
XMLTABLE
:DBFiddle Démo
À l'aide de
GROUP BY CUBE
:Rextester Démo
Une variante de Pierre exemple, qui démontre un sens, cela pourrait être utilisé pour générer tous les nombres entre 0 et 99.
Quelque chose comme ceci est utile lorsque vous faites des lots identificateur de cession, et à la recherche pour les éléments qui n'ont pas encore été attribué.
Par exemple, si vous vendez des tickets de bingo, vous pouvez attribuer des lots de 100 personnel au sol (devinez comment j'ai utilisé pour lever des fonds pour le sport). Comme ils vendent un lot, ils sont le lot suivant dans la séquence. Cependant, les gens achat des billets peut choisir d'acheter des billets à partir du lot. La question peut être posée de, "ce que les billets ont été vendus".
Dans ce cas, nous n'avons qu'une partielle, au hasard, la liste des billets qui ont été retournés dans le lot, et requièrent une liste complète de toutes les possibilités afin de déterminer lesquelles nous n'avons pas.
Excuse l'utilisation de mots-clés, j'ai changé certains noms de variables à partir d'un exemple concret.
... Pour démontrer pourquoi quelque chose comme cela serait utile
J'ai créé un Oracle une fonction qui retourne un tableau de nombres
Est nécessaire de créer un nouveau type de données:
Utilisation:
Et si vous avez besoin de décimales entre les nombres par exponencial notation:
Ici est une façon amusante pour générer un numéro de table. Il n'utilise pas le DOUBLE de la table, mais le DOUBLE de table jamais disparaître, alors que cela pourrait être un plan de sauvegarde.
C'est sans doute absurde, mais c'est une solution de travail, et c'était amusant à écrire.
La requête ci-dessus est écrit dans SQL dans la base de données.