La sélection de données de colonne en fonction des positions ordinales est généralement déconseillée, mais certains scénarios peuvent justifier son utilisation. Cette question explore la possibilité d'une telle sélection dans SQL Server.
Question :
Pouvons-nous récupérer les données d'une colonne en utilisant la position ordinale d'une colonne de table ? A titre d'exemple, considérons le tableau suivant :
create table Test( Col1 int, Col2 nvarchar(10) )
Au lieu de sélectionner à l'aide du nom de la colonne :
select Col2 from Test
Pouvons-nous écrire :
select "2" from Test -- for illustration purposes only
Réponse :
Bien que SQL Server ne prenne pas en charge nativement la sélection des colonnes par position ordinale, une solution de contournement peut être réalisé en exploitant l'opération produit cartésien :
select NULL as C1, NULL as C2 where 1 = 0 -- Returns empty table with predefined column names union all select * from Test -- There should be exactly 2 columns, but names and data type doesn't matter
Il en résulte un tableau avec deux colonnes ([C1] et [C2]) qui correspondent au nombre de colonnes de la table Test. En sélectionnant la deuxième colonne de ce produit cartésien, on récupère effectivement les données de la deuxième colonne de la table Test.
A noter que cette méthode n'est pratique que pour les tables avec un nombre de colonnes prédéfini. Son utilisation pour des tables comportant un grand nombre de colonnes peut s'avérer inefficace et sujette aux erreurs.
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!