545 votos

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

No vi que se hicieran preguntas similares sobre este tema, y tuve que investigarlo por algo en lo que estoy trabajando ahora mismo. 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 el estilo DOS-/Windows CRLF los saltos de línea, 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/

Sólo tienes que concatenar la cuerda e insertar un CHAR(13) donde quieres que se rompa la línea.

Ejemplo:

DECLARE @text NVARCHAR(100)
SET @text = 'This is line 1.' + CHAR(13) + 'This is line 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 hacerlo es como tal:

INSERT CRLF SELECT 'fox 
jumped'

Es decir, simplemente insertando un salto de línea en tu consulta mientras la escribes añadirá el salto similar a la base de datos. Esto funciona en Server Management Studio SQL y en el analizador de consultas. Creo que esto también funcionará en Do# si usas el signo @ en las cuerdas.

string str = @"INSERT CRLF SELECT 'fox 
    jumped'"

Saludos,
Frank

15voto

Rob Cooper Puntos 15945

Siguiendo a un Google...

Tomando el código de la página 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 he hecho yo mismo :)

12voto

Bruce Allen Puntos 61

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

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

Para "ver" los cr-lfs, usa la declaración impresa como:

declarar @tmp varchar(500)

seleccione @tmp = msgbody de emailssentlog donde id=6769

imprimir @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