Est-il possible de sélectionner plusieurs constantes dans plusieurs lignes de résultats dans SQL?

Je sais que je peux "SELECT 5 AS foo" et get le résultat:

foo

5

(1 rang)

… est-il possible de "SELECT 5,6,7 AS foo" et get le résultat:

foo

5

6

7

(3 rangées)

… Je suis bien conscient que ce n'est pas un usage typique de la DB, et tout usage concevable de cette technique est probablement préférable à une technique plus ordinaire. Plus d'une question technique.

Note: Je sais que je pourrais utiliser une grosse list brute d'UNIONs – j'essaie de find autre chose.

c'est facile avec une table de nombres, voici un exemple

select number as foo from master..spt_values where type = 'p' and number between 5 and 7 

ou si vous voulez utiliser dans

 select number as foo from master..spt_values where type = 'p' and number in(5,6,7) 
 select foo from (select 1 as n1, 2 as n2, 3 as n3) bar unpivot (foo for x in (n1, n2, n3)) baz; 

Il est possible d'utiliser ces techniques et d'autres (comme toute personne qui a interviewé pour un post de développeur de database vous le dira). Mais il est généralement plus facile (et les outils sont plus appropriés) de le faire dans une autre couche d'abstraction; c'est-à-dire votre DAL, ou au-delà, où vous visualisez datatables sous forme de list quelconque. Bien que les produits rdbms fournissent des facilitateurs, c'est une distorsion du model conceptuel relationnel.

Juste pour le plaisir, ne rêverait pas de l'utiliser pour de vrai:

 WITH numbers AS ( SELECT ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber' FROM sys.all_objects ) SELECT RowNumber FROM numbers WHERE RowNumber BETWEEN 5 AND 7;