Published on

August 21, 2016

Exploration de SQL Server: La puissance du constructeur de lignes

Chaque version de SQL Server apporte quelque chose de nouveau qui remet en question notre compréhension du fonctionnement du logiciel. Pour moi, travailler avec SQL Server est très rafraîchissant et gratifiant car chaque jour, je découvre et j’apprends quelque chose de nouveau sur le produit. Il y a des tonnes de professionnels qui travaillent sur ce produit et ils repoussent les limites d’utilisation et apportent des cas d’utilisation intéressants dont j’apprends. Apprenons à connaître le constructeur de lignes. Ce voyage de SQL Server sur ce blog est simplement ma façon d’exprimer toutes ces connaissances et de les documenter.

Lors d’une récente revue de code pour l’une de mes missions de conseil, j’ai découvert un code qui s’exécutait pendant un temps anormalement long. Intrigué, j’ai décidé d’enquêter sur la façon dont il avait été écrit par le développeur. Le code visait à générer une valeur commune avec une autre valeur en utilisant une jointure croisée. Le résultat souhaité ressemblait à ceci:

MesureMultiplierUnité
kilooctet10^3octet
mégaoctet10^6octet
gigaoctet10^9octet
téraoctet10^12octet
kilomètre10^3mètre
mégamètre10^6mètre
gigamètre10^9mètre
téramètre10^12mètre

Cela peut être réalisé de plusieurs manières, mais le code que j’ai écrit pour obtenir cela utilise la fonctionnalité du constructeur de lignes de SQL Server:

SELECT [MetricsPre].[Pre] + [Measuring].[Unit] AS [Mesure], [MetricsPre].[Multiplier], UPPER([Measuring].[Unit])
FROM (VALUES ('kilo', '10^3'),
             ('mega', '10^6'),
             ('giga', '10^9'),
             ('tera', '10^12')) AS [MetricsPre] ( [Pre], [Multiplier] ),
     (VALUES ('octet'),
             ('mètre')) AS [Measuring] ( [Unit] )

Je sais que c’est une approche assez peu conventionnelle, mais elle fait quand même le travail pour nous.

Maintenant, voici un défi pour vous: y a-t-il une autre façon d’obtenir le même résultat en utilisant SQL Server dans une seule requête? Je sais que les CTE sont l’une des autres façons aussi. Alors essayez autre chose maintenant. J’aimerais entendre vos réflexions et solutions dans les commentaires ci-dessous.

De plus, si vous avez utilisé d’autres implémentations du constructeur de lignes dans votre environnement, je serais intéressé de les connaître. Le partage de vos expériences et implémentations profitera non seulement aux lecteurs du blog, mais me fournira également des informations précieuses.

Merci de m’accompagner dans cette exploration de SQL Server. J’attends avec impatience vos implémentations intéressantes et les expériences d’apprentissage à venir.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.