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.
Respuestas
¿Demasiados anuncios?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.
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ó'"
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! :)
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