545 votos

¿Cómo insertar un salto de línea en una cadena de tipo VARCHAR/NVARCHAR de SQL Server?

No vi ninguna pregunta similar sobre este tema, y tuve que investigar esto para algo en lo que estoy trabajando en este momento. Pensé en publicar la respuesta por si alguien más tenía la misma pregunta.

580voto

Sören Kuklau Puntos 9445

char(13) es CR. Para los saltos de línea CRLF al estilo DOS/Windows, quieres char(13)+char(10), como:

'This is line 1.' + CHAR(13)+CHAR(10) + 'This is line 2.'

278voto

Mark Struzinski Puntos 11288

Encontré la respuesta aquí: http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in-code/

Solo concatenas la cadena e insertas un CHAR(13) donde desees tu salto de línea.

Ejemplo:

DECLARE @text NVARCHAR(100)
SET @text = 'Esta es la línea 1.' + CHAR(13) + 'Esta es la línea 2.'
SELECT @text

Esto imprime lo siguiente:

Esta es la línea 1.
Esta es la línea 2.

80voto

Frank V Puntos 9690

Otra forma de hacer esto es la siguiente:

INSERT CRLF SELECT 'el zorro
saltó'

Es decir, simplemente insertando un salto de línea en tu consulta mientras la escribes se añadirá el salto de línea a la base de datos. Esto funciona en SQL Server Management Studio y Query Analyzer. Creo que también funcionará en C# si utilizas el signo @ en cadenas de texto.

string str = @"INSERT CRLF SELECT 'el zorro
    saltó'"

15voto

Rob Cooper Puntos 15945

Siguiendo un Google...

Tomando el código del sitio web:

CREATE TABLE CRLF
    (
        col1 VARCHAR(1000)
    )

INSERT CRLF SELECT 'The quick brown@'
INSERT CRLF SELECT 'fox @jumped'
INSERT CRLF SELECT '@over the '
INSERT CRLF SELECT 'log@'

SELECT col1 FROM CRLF

Returns:

col1
-----------------
The quick brown@
fox @jumped
@over the
log@

(4 row(s) affected)

UPDATE CRLF
SET col1 = REPLACE(col1, '@', CHAR(13))

Parece que se puede hacer reemplazando un marcador de posición con CHAR(13)

Buena pregunta, ¡nunca lo hice yo mismo! :)

12voto

Bruce Allen Puntos 61

Llegué aquí porque me preocupaba que los cr-lfs que especificaba en las cadenas de C# no se mostraban en las respuestas de consultas de SQl Server Management Studio.

Resulta que sí están ahí, pero no se muestran.

Para "ver" los cr-lfs, utiliza la declaración print así:

declare @tmp varchar(500)    
select @tmp = msgbody from emailssentlog where id=6769;
print @tmp

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X