Ajouter ou supprimer un 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.

Requête SQL pour ajouter ou supprimer un retour chariot dans un texte

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.

Le nombre de colonnes et de lignes dans le fichier Excel est donc différent! 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.

Supprimer un retour chariot dans une colonne MSSQL

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. Les trois parties de l’adresse sont maintenant sur la même ligne.

123, avenue du Mont Gatineau, Ottawa

Ainsi ajouter ou supprimer un retour chariot avec SQL Server sont simplement deux opération inverses, effectuée avec les mêmes fonctions T-SQL.

Voici un tutoriel pour apprendre comment découper un texte après un caractère avec SQL Server.

Ajouter un retour à la ligne CR+LF à 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.

Utilité des retours chariots

Un saut de ligne est une ponctuation visuelle qui indique la fin d’un paragraphe et le début d’un autre. L’utilisation des sauts de ligne dans les textes remonte aux manuscrits anciens, où les scribes séparaient les différentes sections par des lignes verticales appelées rubriques.

Ces anciens livres utilisaient des lignes horizontales et verticales pour diviser chaque page. Les sauts de ligne sont importants pour deux raisons : ils créent une séparation visuelle entre les paragraphes et ils créent des espaces blancs sur la page.

Le but d’un retour à la ligne est de donner au lecteur une chance de s’arrêter. Il lui est ainsi plus facile d’assimiler ce qu’il a lu jusqu’à présent. Il permet également d’éviter toute confusion. Un saut de ligne est défini comme « un paragraphe ou une série de mots qui se termine par une ou plusieurs lignes blanches. » Les sauts de ligne sont donc très importants pour la lisibilité et la fluidité.

Sauts de ligne et retours chariot en informatique

Le retour chariot est un terme utilisé dans le monde de la programmation informatique. Il s’agit d’une commande qui indique au programme de commencer une nouvelle ligne de texte à l’écran.

Avec SQL Server, le retour chariot est un caractère d’entrée qui indique à la base de données de descendre d’une ligne et de commencer à écrire au début de la ligne suivante.

Le retour chariot est également connu sous le nom de « nouvelle ligne », un code utilisé par de nombreux langages de programmation pour indiquer qu’ils ont atteint la fin d’une ligne de texte et qu’ils doivent recommencer à écrire au début d’une autre ligne.

Une nouvelle ligne est équivalente au CR+LF (Carriage Return + Line Feed)

Le retour chariot (CR) est un caractère de contrôle ou une commande dans un fichier texte. Il permet de déplacer le curseur au début de la ligne suivante.

La séquence CR+LF est utilisée comme marqueur de fin de ligne dans les fichiers texte. Cela signifie qu’elle indique à l’ordinateur où se termine une ligne logique et où commence une autre. Elle se trouve à la fin de chaque ligne logique d’un fichier texte.

La combinaison retour chariot et saut de ligne est le type le plus élémentaire de marqueur de fin de ligne, appelé retour chariot « littéral » ou « dur ».

Une séquence CR+LF peut être utilisée pour représenter une nouvelle ligne de texte, ou pour indiquer que le caractère suivant ne doit pas être imprimé sur la ligne en cours. Elle peut être utilisée pour séparer les lignes de texte dans un fichier de données.

Questions sur les retours à la ligne

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.

Ainsi, ce tutoriel 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 par exemple un nom de fichier et une extension de fichier. Et délimitées par un caractère quelconque comme un point.

En conclusion, les retours de chariot ou les sauts de ligne ne sont pas un problème majeur dans SQL Server, a condition de les gérer. Ils peuvent être traités en s’assurant que les caractères CHR(10) et CHR(13) soient détectés et gérés correctement. Les contrôles de la saisie des données aident beaucoup à réduire le nombre de caractères insérés par erreur dans les bases de données.