Published on

October 27, 2019

Insertar retorno de carro y salto de línea SQL en una cadena

En SQL Server, a menudo trabajamos con cadenas para almacenar datos como nombres de empleados, nombres de empresas, reseñas de productos y comentarios. A veces, necesitamos formatear los datos insertando un salto de línea o una tabulación en una cadena. Este formato es especialmente útil cuando se trata de datos en múltiples fuentes como archivos planos o de Excel.

Simulación del problema

Simulemos el problema utilizando la siguiente consulta:

CREATE TABLE [dbo].[CarriageDemo] (
    [text] [NVARCHAR](100) NOT NULL
) ON [PRIMARY];

GO

SELECT * FROM [dbo].[CarriageDemo];

En la salida de SSMS, vemos todo el texto en una sola línea. Sin embargo, cuando copiamos la salida a Excel o Notepad, podemos ver que el texto se divide en varias líneas, conservando el retorno de carro:

Comportamiento de SSMS al copiar datos

El comportamiento del retorno de carro puede variar según las diferentes versiones de SSMS. SSMS 2016 y versiones posteriores eliminan el retorno de carro, lo que hace que la salida se muestre en una sola línea para cada fila. Por otro lado, SSMS 2014 y versiones anteriores conservan el retorno de carro, lo que hace que la salida se divida en varias líneas.

Para controlar el comportamiento del retorno de carro, podemos ir a Herramientas | Opciones | Resultados de la consulta | SQL Server | Resultados en cuadrícula en SSMS. En SSMS 2016 y versiones posteriores, hay una opción llamada “Retener CR/LF al copiar o guardar” que, cuando no está marcada, asegura que SQL Server no retenga el retorno de carro al copiar/guardar.

Insertar retorno de carro y salto de línea SQL en una cadena

Para insertar un salto de línea o un retorno de carro en una cadena, podemos usar la función CHAR con el código de número ASCII. En SQL Server, los siguientes códigos ASCII se utilizan comúnmente:

  • Char(10) – Salto de línea / Salto de línea
  • Char(13) – Retorno de carro
  • Char(9) – Tabulación

Exploraremos estos códigos ASCII con la función CHAR utilizando algunos ejemplos.

Insertar salto de línea o nueva línea

Supongamos que tenemos una cadena que contiene los nombres de los meses separados por comas. Podemos insertar un salto de línea después de cada nombre de mes utilizando la función REPLACE:

DECLARE @strInput VARCHAR(100), @strResult VARCHAR(100);

SET @strInput = 'Enero,Febrero,Marzo,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre';

SET @strResult = REPLACE(@strInput, ',', CHAR(10));

SELECT @strResult AS 'Cadena con Salto de Línea';

La salida mostrará la cadena con un salto de línea después de cada mes:

Insertar retorno de carro

Para insertar un retorno de carro en lugar de un salto de línea, podemos usar la función CHAR(13):

DECLARE @strInput VARCHAR(100), @strResult VARCHAR(100);

SET @strInput = 'Enero,Febrero,Marzo,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre';

SET @strResult = REPLACE(@strInput, ',', CHAR(13));

SELECT @strResult AS 'Cadena con Retorno de Carro';

La salida mostrará la cadena con un retorno de carro:

Insertar retorno de carro y salto de línea

Si queremos insertar tanto un retorno de carro como un salto de línea, podemos usar las funciones CHAR(10) y CHAR(13) juntas:

DECLARE @strInput VARCHAR(100), @strResult VARCHAR(100);

SET @strInput = 'Enero,Febrero,Marzo,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre';

SET @strResult = REPLACE(@strInput, ',', CHAR(10) + CHAR(13));

SELECT @strResult AS 'Cadena con Salto de Línea';

La salida mostrará la cadena con tanto un retorno de carro como un salto de línea:

Insertar tabulación

A veces, es posible que necesitemos insertar una tabulación entre caracteres con fines de formato. Podemos hacer esto usando la función CHAR(9):

DECLARE @strInput VARCHAR(100), @strResult VARCHAR(100);

SET @strInput = 'Enero,Febrero,Marzo,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre';

SET @strResult = REPLACE(@strInput, ',', CHAR(9));

SELECT @strResult AS 'Cadena con Salto de Línea';

La salida mostrará la cadena con una tabulación entre cada mes:

Eliminar salto de línea

Si tenemos una tabla que contiene datos con un salto de línea, podemos eliminarlo utilizando la función REPLACE:

CREATE TABLE [dbo].[EmployeeData] (
    [EmpID] INT IDENTITY(1, 1),
    [FirstName] NVARCHAR(20),
    [LastName] NVARCHAR(20),
    [Address] NVARCHAR(100)
);

INSERT INTO [dbo].[EmployeeData] (FirstName, LastName, Address)
VALUES (N'Rajendra', N'Gupta', N'123, Maruti Kunj, Gurgaon');

SELECT EmpID, FirstName, LastName, REPLACE(Address, CHAR(13) + CHAR(10), ' ') AS Address
FROM EmployeeData;

La salida mostrará el campo de dirección sin el salto de línea.

Conclusión

En este artículo, exploramos cómo insertar y eliminar el retorno de carro y el salto de línea SQL en una cadena. También aprendimos sobre el comportamiento de SSMS al copiar datos a Notepad o Excel, y cómo controlar el comportamiento del retorno de carro en SSMS. Al usar la función CHAR con los códigos ASCII adecuados, podemos formatear fácilmente cadenas en SQL Server.

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.