Requête pour stocker le contenu d’une colonne SQL Server dans une variable, en ligne et avec des séparateurs.
Tutoriel SQL pour lire et stocker le résultat depuis une colonne SQL Server dans une variable, et avec des séparateurs. Dans certains cas, il est utile de récupérer toutes les valeurs d’une colonne dans une variable T-SQL et d’ajouter un séparateur.
Stocker le contenu d’une colonne SQL Server dans une variable
Pour préparer un tableau avec des caractéristiques spécifiques par exemple. Par exemple, comment transformer l’affiche standard d’une colonne SQL Server, comme ceci :
- Colonne
- Résultat-1
- Résultat-2
- Résultat-3
- Résultat-4
Et afficher cela, soit le résultat de toutes les lignes sélectionnées dans une variable avec un séparateur virgule ou point-virgule par exemple :
Variable : Résultat-1, Résultat-2, Résultat-3, Résultat-4
Pour suivre le cheminement, créer la table utilisée dans l’exemple, y insérer des lignes et construire la requête adaptée aux besoins spécifiques. Pour l’exemple complet, suivre les étapes suivantes.
1. Créer la table des clients et insérer quelques lignes
Commencer par créer la table des clients comme exemple et sélectionner la colonne du pays.
-- Create the customers table CREATE TABLE [dbo].[Customers]( [CustomerID] [int] NOT NULL, [FirstName] [nvarchar](20) NULL, [LastName] [nvarchar](20) NULL, [City] [nvarchar](20) NULL, [Country] [nvarchar](50) NULL, CONSTRAINT [CustomersPrimaryKeyCustomerID] PRIMARY KEY CLUSTERED ([CustomerID] ASC) ); GO -- Insert 4 different lines INSERT INTO dbo.Customers (CustomerID, FirstName, LastName, City, Country) VALUES ( 1, 'Ali','Ahmed','Cairo','Egypt'); INSERT INTO dbo.Customers (CustomerID, FirstName, LastName, City, Country) VALUES ( 2, 'Johnny','John','Toronto','Canada'); INSERT INTO dbo.Customers (CustomerID, FirstName, LastName, City, Country) VALUES ( 3, 'John','Doe','Mexico City','Mexico'); INSERT INTO dbo.Customers (CustomerID, FirstName, LastName, City, Country) VALUES ( 4, 'Shu','Abbas','Paris','France'); SELECT [Country] FROM [dbo].[Customers];
2. Requête pour stocker une colonne en ligne avec séparateurs
La requête suivante permet de stocker chaque ligne de la colonne dans une variable et d’y ajouter un séparateur, ici c’est le point-virgule. Le résultat est donc sur une seule ligne. Le script utilise la fonction SQL Server COALESCE().
La variable peut contenir 1000 caractères, en fonction du besoin il faut adapter le type de la variable texte. Notamment pour gérer des chaines de plus de 8000 caractères avec une variable T-SQL.
-- Classical selection SELECT [Country] FROM [dbo].[Customers]; -- Transform column in one line DECLARE @result_in_line nvarchar(1000); SELECT @result_in_line = COALESCE(@result_in_line+';','') + [Country] FROM [dbo].[Customers]; SELECT @result_in_line;
Voici le résultat du script exécuté depuis SSMS:
Voici comment stocker une colonne SQL Server dans une variable, en ligne avec des séparateurs de type point-virgule, plutôt qu’en colonne. En effet, cet exemple de script écrit en langage T-SQL est particulièrement utile pour afficher des valeurs distinctes d’une colonne, triée par ordre croissant.
Enfin, pour apprendre de nouveaux scripts T-SQL, voici une requête SQL pour convertir une variable SQL Server XML en texte.
Be the first to comment