2008-09-26 26 views
9

En SQL SERVER Es posible almacenar datos con retorno de carro en una tabla y luego recuperarlos de nuevo con retorno de carro.Datos en una tabla con retorno de carro?

Ej:

insert into table values ('test1 

test2 

test3 

test4'); 

Cuando recupero, me sale el mensaje en una línea

test1 test2 test3 test4

El retorno de carro es tratado como un único carácter.

¿Hay alguna forma de obtener los retornos de carro o solo la forma en que se almacenará?

Gracias por la ayuda muchachos !!!

Editar: Debería haber explicado esto antes. Obtengo los datos del desarrollo web (asp .net) y simplemente los inserto en la tabla. Puede que no esté haciendo ninguna manipulación de datos ... solo inserte.

Devuelvo los datos al desarrollo de la aplicación (C++) y es posible que algunos datos o visor de informes.

No quiero manipular los datos.

Respuesta

1

¿Puede aclarar cómo recupera los datos de la base de datos? ¿Qué herramienta usas? Los datos probablemente contengan los retornos de carro pero no se muestran si obtiene los resultados en la cuadrícula (intente los resultados en la opción de texto)

0

Es posible que deba ingresar un "\ n" en lugar de un retorno de carro literal.

25

Puede almacenar el retorno de carro en la base de datos. El problema aquí es que está usando SQL Server Management Studio para mostrar los resultados de su consulta. Probablemente lo haya configurado para mostrar los resultados en una grilla. Cambie la configuración de SSMS para mostrar los resultados en texto y verá los retornos de carro.

clic derecho en la ventana de consulta -> Resultados Para -> Resultados To Text

ejecutar la consulta de nuevo.

+0

Esto es exactamente correcto. ;) Probé para verificar antes de publicar y Mastros me ganó. – theo

0

El retorno de carro se almacena como está. El problema aquí es que su cliente sql no lo está entendiendo. Si realizó un volcado sin procesar de estos datos, verá que los retornos de carro están allí en los datos.

Uso DBArtisan en el trabajo y parece funcionar bien. Sin embargo, isql parece tener el mismo problema que usted informó.

4

IIRC, utilizando chr (13) + chr (10) debería funcionar.

insert into table values ('test1' + chr(13) + chr(10) + 'test2'); 
+0

Estrictamente hablando, chr (13) es Carriage Return, pero chr (10) no lo es. Es Line Feed. – Constantin

+1

Es CHAR en SQL Server, no CHR –

+0

'chr' es para oráculo. –

0

¿Este resultado se encuentra en su analizador de HTML o en el de Query? Si está en HTML, eche un vistazo al código fuente y podría aparecer correcto allí, en cuyo caso tendría que reemplazar los caracteres crlf con etiquetas <br />.

También estoy pensando que solía haber atributos que podría agregar a un área de texto HTML para obligarlo a enviar retornos de carro de ciertas maneras: ¿suave o difícil? No lo he buscado, tal vez alguien podría hacer eso.

Pero SQL Server guarda los dos caracteres en mi experiencia.De hecho, hice exactamente lo que describió aquí hace unos días usando SQL 2005 y cada salto de línea tiene dos caracteres no imprimibles.

6
INSERT INTO table values('test1' + CHAR(10) + 'test2' + CHAR(10) + 'test3' + CHAR(10) + 'test4') 

Esto debería hacerlo. Para ver el efecto, cambie la ventana de resultados de la consulta a salida de texto sin formato.

Saludos

0

estoy usando SQLite para almacenar TexBox multilínea y tengo algo por el estilo cuando se recuperan los datos almacenados y mostrarlo en cualquier objeto (txtboxes, etiquetas, etc.). Cada vez que copié datos en NotePad/WordPad o similar, pude ver que los retornos de carro se almacenaban, simplemente no se mostraban en la página ASP.

encontrado la respuesta aquí:

http://www.mikesdotnetting.com/Article/20/How-to-retain-carriage-returns-or-line-breaks-in-an-ASP.NET-web-page

espero que ayude.

Mi ejemplo de código:

C#:

protected void Page_Load(object sender, EventArgs e) 
    { 
     String str = Request.QueryString["idNoticia"]; 
     this.dsNewsDetails.FilterExpression = "idNoticia=" + str; 
    } 

ASPX:

<asp:Label ID="BodyLabel" 
     runat="server" style="font-size: medium" 
     Text='<%# Eval("body").ToString().Replace(Environment.NewLine,"<br/>") %>' Width="100%" /> 

Nota: como se menciona en el enlace proporcionado, Environment.NewLine funciona tanto para C# y VB

0

Si cambia la salida a texto plano, puede ver los datos en líneas diferentes. Para cambiar la salida, vaya a Tools>Options>Query Results y configure el destino predeterminado como: texto. También puede intentar presionar Ctrl+p antes de ejecutar la consulta. Espero eso ayude.

Cuestiones relacionadas