2008-09-26 13 views
9

W SERWERZE SQL Czy możliwe jest przechowywanie danych z powrotem karetki w tabeli, a następnie odzyskiwanie z powrotem z powrotem karetki.Dane w tabeli z powrotem karetki?

Np

insert into table values ('test1 

test2 

test3 

test4'); 

Kiedy je odzyskać, dostaję komunikat w linii

test1 test2 test3 test4

Powrót karetki jest traktowany jako jeden znak.

Czy można uzyskać zwrot karetki lub sposób jej przechowywania?

Dzięki za pomoc!

Edytuj: Powinienem już to wyjaśnić. Otrzymuję dane z tworzenia stron internetowych (asp .net) i właśnie wstawiam je do tabeli. Możliwe, że nie będę manipulował danymi. Po prostu wstaw.

Zwracam dane do rozwoju aplikacji (C++) i może to być przeglądarka danych lub raportów.

Nie chcę manipulować danymi.

Odpowiedz

1

Czy możesz wyjaśnić, w jaki sposób odzyskujesz dane z bazy danych? Z jakiego narzędzia korzystasz? Dane prawdopodobnie zawierają powroty karetki, ale nie są wyświetlane, jeśli otrzymasz wyniki w siatce (spróbuj wyników w opcji tekstowej).

0

Może być konieczne wstawienie "\ n" zamiast dosłownego zwrotu karetki.

25

Możesz zapisać powrót karetki do bazy danych. Problem polega na tym, że używasz SQL Server Management Studio do wyświetlania wyników zapytania. Prawdopodobnie masz to skonfigurowane, aby wyświetlać wyniki w siatce. Zmień konfigurację SSMS, aby wyświetlać wyniki w tekście, a zobaczysz powrót karetki.

prawym przyciskiem myszy w oknie zapytań -> Wyniki To -> Wyniki na tekst

Uruchom zapytanie ponownie.

+0

To jest dokładnie poprawne. ;) Testowałem, aby zweryfikować przed wysłaniem, a Mastros pobił mnie do tego. – theo

0

Zwrot karetki jest zapisywany w niezmienionej postaci. Problem polega na tym, że twój klient SQL go nie rozumie. Jeśli zrobiłeś surowy zrzut tych danych, zobaczysz, że w danych znajdują się powroty karetki.

Używam DBArtisan w pracy i wygląda na to, że działa dobrze. Jednak wydaje się, że isql ma ten sam problem, który zgłosiłeś.

4

Powinien działać IIRC, używając chr (13) + chr (10).

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

Ściśle mówiąc, chr (13) to powrót karetki, ale chr (10) nie jest. To jest Line Feed. – Constantin

+1

To CHAR w SQL Server, a nie CHR –

+0

'chr' jest dla oracle. –

0

Czy to wynik w kodzie HTML lub analizatorze zapytań? Jeśli jest w HTML, spójrz na kod źródłowy i może się tam wydawać poprawny, w takim przypadku musisz zastąpić znaki crlf znacznikami <br />.

Wydaje mi się również, że kiedyś istniały atrybuty, które można dodać do ramki tekstowej HTML, aby zmusić ją do wysyłania powrotów karetki w określony sposób - miękki czy twardy? Nie sprawdziłem tego, być może ktoś mógłby to zrobić.

Ale SQL Server zapisuje dwa znaki w moim doświadczeniu.W rzeczywistości zrobiłem dokładnie to, co opisałeś tutaj kilka dni temu przy użyciu SQL 2005, a każda linia składa się z dwóch niedrukowalnych znaków.

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

To powinno wystarczyć. Aby zobaczyć efekt, przełącz okno wyników zapytania na tekstowy.

Pozdrowienia

0

używam SQLite do przechowywania multilinii texbox i coś takiego podczas pobierania danych przechowywanych i pokazano go na dowolnym obiekcie (txtboxes, etykiety itp.) Za każdym razem, gdy kopiowałem dane do NotePada/WordPada lub podobnego, mogłem zauważyć, że deklaracje karetki były przechowywane, po prostu nie były wyświetlane na stronie ASP.

znaleźć odpowiedź tutaj:

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

nadzieję, że pomoże.

mój przykładowy kod:

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%" /> 

Uwaga: jak wspomniano w podany link, Environment.NewLine działa zarówno dla C# i VB

0

Po przełączeniu wyjścia na zwykły tekst dane można wyświetlić w różnych wierszach. Aby przełączyć wyjście, przejdź do opcji Tools>Options>Query Results i ustaw domyślne miejsce docelowe na: tekst. Możesz także spróbować uderzyć w Ctrl+p przed wykonaniem zapytania. Mam nadzieję, że to pomoże.

Powiązane problemy