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 en caso de que alguien más tuviera la misma pregunta.
sql
sql-server
line-breaks
Mark Struzinski
fuente
fuente
Respuestas:
char(13)
esCR
. Para los saltos de línea de estilo DOS / WindowsCRLF
, deseachar(13)+char(10)
, como:fuente
+
, SQL Server comenzará a quejarse de que su consulta está demasiado anidada. En cambio, mi solución fue utilizar la respuesta de Rob Cooper, pero con un token mucho más largo y oscuro.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- código/
Simplemente concatene la cadena e inserte un lugar
CHAR(13)
donde desee su salto de línea.Ejemplo:
Esto imprime lo siguiente:
fuente
NCHAR(0x1234)
para obtener un carácter unicode. No es necesario para insertar saltos de línea, pero puede ser útil si uno debe insertar / buscar caracteres unicode.print
lugar deselect
, por ejemplo:DECLARE @text NVARCHAR(100); SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.'; print @text;
Otra forma de hacer esto es como tal:
Es decir, simplemente insertando un salto de línea en su consulta mientras lo escribe agregará el salto similar a la base de datos. Esto funciona en SQL Server Management Studio y Query Analyzer. Creo que esto también funcionará en C # si usa el signo @ en las cadenas.
fuente
Ejecute esto en SSMS, muestra cómo los saltos de línea en el propio SQL se convierten en parte de los valores de cadena que abarcan líneas:
Resultado:
Línea 1
Línea 2
Línea 3
¿Cuánto dura un avance de línea en blanco?
2
¿Cuáles son los valores ASCII?
13
10
O si prefiere especificar su cadena en una línea (¡casi!) Podría emplearla de
REPLACE()
esta manera (opcionalmente, usarlaCHAR(13)+CHAR(10)
como reemplazo):fuente
Siguiendo un Google ...
Tomando el código del sitio web:
Parece que se puede hacer reemplazando un marcador de posición con CHAR (13)
Buena pregunta, nunca lo hice yo mismo :)
fuente
Llegué aquí porque me preocupaba que los cr-lfs que especifiqué en las cadenas de C # no se mostraran en las respuestas de consulta de SQl Server Management Studio.
Resulta que están allí, pero no se muestran.
Para "ver" el cr-lfs, use la instrucción print como:
fuente
Aquí hay una función C # que antepone una línea de texto a un blob de texto existente, delimitado por CRLF, y devuelve una expresión T-SQL adecuada para
INSERT
uUPDATE
operaciones. Tiene algo de nuestro manejo de errores patentado, pero una vez que lo elimine, puede ser útil, espero que sea así.fuente
Yo diría que
o
fuente
Esto siempre es genial, porque cuando obtienes listas exportadas de, digamos Oracle, obtienes registros que abarcan varias líneas, lo que a su vez puede ser interesante para, por ejemplo, archivos cvs, así que ten cuidado.
De todos modos, la respuesta de Rob es buena, pero aconsejaría usar algo más que @, intente algunos más, como §§ @@ §§ o algo así, de modo que tenga la posibilidad de un poco de singularidad. (Pero aún así, recuerda la longitud del campo
varchar
/ en elnvarchar
que estás insertando ...)fuente
Todas estas opciones funcionan según su situación, pero es posible que no vea que ninguna de ellas funciona si está utilizando SSMS (como se menciona en algunos comentarios, SSMS oculta CR / LF)
Entonces, en lugar de conducir por la curva, verifique esta configuración en
Tools
|
Options
fuente