Stocker une colonne SQL Server dans une variable avec séparateurs

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];
Créer la table des clients pour insérer et afficher la colonne du pays
Créer la table des clients pour insérer et afficher la colonne du pays

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:

Comment stocker une colonne SQL dans une variable avec séparateurs ?
Comment stocker une colonne SQL dans une variable avec séparateurs ?

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.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*