Retour chariot avec SQL Server

Comment supprimer un retour chariot d’un texte avec SQL Server ? Si vous stockez une chaîne de caractères comme une variable ou une colonne dans SQL Server, alors elle peut contenir des sauts de ligne. Par exemple, si vous exportez la chaîne vers Excel, votre ligne sera coupée. En effet, avec SSMS, si vous sélectionnez des données contenant des retours chariot ou des nouvelles lignes, alors l’écran affiche le contenu complet de la ligne.

Avec un copier-coller depuis l’éditeur SQL Server ou dans votre éditeur de texte préféré comme Notepad++ par exemple, vous remarquerez que le texte peut contenir des sauts de ligne.

Par exemple, vous pouvez copier et coller une grande quantité de données du résultat SSMS vers Excel avec des sauts de ligne. La feuille Excel affiche des données non alignées, différentes du résultat de la requête originale. Le tableau n’est pas structuré comme vous le souhaitiez car chaque saut de ligne crée une nouvelle ligne.

Supprimer les retours chariots d’un texte avec SQL Server

Vous n’avez plus le même nombre de colonnes et de lignes dans votre fichier Excel ! Ces sauts de ligne sont souvent un problème dans les très gros fichiers car ils sont difficiles à trouver et à réparer. La solution consiste à les supprimer directement dans la requête SQL Server.

Tout d’abord, préparons une table avec quelques données échantillons qui contiennent des sauts de ligne. Nous divisons ici la colonne adresse en trois lignes différentes.

-- Si la table des clients existe déjà, alors supprimer la table
IF exists( 	SELECT 1 FROM sys.objects
            WHERE object_id = object_id(N'dbo.CUSTOMERS') AND type in (N'U') )
BEGIN DROP TABLE [dbo].[CUSTOMERS]
END;

-- Création de la table des clients
CREATE TABLE [dbo].[CUSTOMERS] (
    [CustomerID] INT IDENTITY(1,1),
    [FirstName] NVARCHAR(20),
    [LastName] NVARCHAR(20),
    [AddressText] NVARCHAR(100),
    [CountryCode] NVARCHAR(3),
    [CountryName] NVARCHAR(50)
);

-- Insertion des coordonnées d'un client avec des sauts de lignes
INSERT INTO dbo.CUSTOMERS ( FirstName, LastName, AddressText, CountryCode, CountryName )
VALUES ( N'SMITH',N'John', 
N'123,
Mount Gatineau Avenue,
Ottawa',
N'CA',N'CANADA');

-- Vérifier les résultats avec une requête SELECT
SELECT 	* 
FROM 	dbo.CUSTOMERS;

Pour aller plus loin, voici la documentation de la fonction intégrée REPLACE de SQL Server.

Ensuite, si vous copiez et collez la colonne Texte de l’adresse à partir du résultat SQL Server. Remarquer que l’adresse contient deux sauts de ligne, comme dans l’instruction INSERT:

123,
Mount Gatineau Avenue,
Ottawa

Pour supprimer ces sauts de ligne SQL, utiliser la fonction replace du serveur SQL.
En effet, les codes spécifiques CHAR(13) et CHAR(10) représentent les caractères du saut de ligne, puis on les remplace par un espace ou une virgule, par exemple:

SELECT 	CustomerID, FirstName, LastName, 
        REPLACE(AddressText,CHAR(13)+CHAR(10),' '), 
        CountryCode, CountryName
FROM dbo.CUSTOMERS;


Cette fois, le copier-coller du texte nous donne ce résultat. Il affiche clairement l’adresse du client sans aucun retour à la ligne, nous voyons les trois parties de l’adresse sur la même ligne.

123, avenue du Mont Gatineau, Ottawa

Ajouter un retour à la ligne à une chaîne de caractères SQL Server

A l’inverse, pour ajouter un saut de ligne à une colonne dans une requête, il suffit d’ajouter les deux caractères spéciaux ci-dessous:

  • CHAR(13)
  • CHAR(10)

La requête ressemble à cela:

-- Requête pour ajouter un retour chariot et constuire l'adresse complète
SELECT 
	[CustomerID]
	,[FirstName]
	,[LastName]
	,[AddressText] + CHAR(13) + CHAR(10)
	+[CountryCode] + CHAR(13) + CHAR(10)
	+[CountryName] AS [FullAdress]
FROM 	dbo.CUSTOMERS;

Pour voir les retours chariots, activer l’option “Résultats vers Textes” depuis SSMS.

Cet article montre comment supprimer ou ajouter les retours chariots avec SQL Server depuis une colonne. Voici une autre requête SQL pour diviser une chaîne de caractères en deux parties comme un nom de fichier et une extension de fichier. Et délimitées par un caractère quelconque comme un point.

Qu’est-ce qu’un retour chariot ou retour à la ligne ?

On parle de saut de ligne ou de retour chariot lorsqu’une ligne est coupée en deux ou plusieurs parties et que le reste de la ligne en cours apparaît dans la suivante.

Quel est le meilleur outil pour éditer un fichier texte ?

L’un des meilleurs outils pour éditer un fichier est Notepad++ car il vous permet d’éditer des fichiers de taille moyenne sans erreur. Il reconnaît également de nombreux langages différents comme XML, SQL, HTML, MS-DOS, Java ou encore PHP.

Quelle est la différence entre les caractères spéciaux char(13) et char(10) ?

Les caractères spéciaux char(13) et char(10) ont à voir avec les nouvelles lignes dans les fichiers texte. Char(13) est le retour chariot et char(10) est le symbole de saut de ligne.

Comment supprimer un saut de ligne dans une colonne avec SQL Server ?

Pour supprimer le retour chariot ou saut de ligne d’une colonne SQL, appliquer une méthode de remplacement comme la fonction REPLACE pour le supprimer et le remplacer par un espace ou une chaîne de caractère vide.