none
Sonderzeichen (Zeilenumbruch) in SQL Server Tabelle RRS feed

  • Frage

  • Hallo SQL Server Freunde,
     
    ich habe da mal eine Anfängerfrage:
     
    In einer meiner Tabellen stehen Strings mit Sonderzeichen (ein Kästchen, ist wohl ein Zeichenumbruch). Nun möchte ich in einer View das Zeichen ersetzen durch einen HTML-Tag (<br>).
     
    Dass ich die Funktion REPLACE brauche, weiß ich, aber wie spreche ich das Sonderzeichen, das Kästchen an? Ich habe es versucht, in dem ich das Kästchen-Zeichen direkt in der REPLACE-Funktion angegeben habe, aber das klappt nicht.
     
    Benötige ich - wie in VB - chr() oder etwas vergleichbares und wo finde ich den Code für das Zeichen?
     
    Gruß und ein schönes WE
     
    Thomas
     
     

    Freitag, 4. Mai 2012 05:41

Antworten

  • Hallo Thomas

    tommy_schroeder wrote:

    In einer meiner Tabellen stehen Strings mit Sonderzeichen (ein Kästchen,
    ist wohl ein Zeichenumbruch). Nun möchte ich in einer View das Zeichen ersetzen durch einen HTML-Tag (<br>).

    SELECT REPLACE(DeinFeld, CHAR(13) + CHAR(10), '<br>')
     FROM DeineTabelle

    Achtung: Zeilenumbruch ist nicht Zeilenumbruch. Es gibt mindestens 3 verschiedene Arten von Zeilenumbrüchen, welche Du wohl aus VB kennst: CR, LF und CRLF

    Obiges Beispiel ersetzt nur die CRLF durch <br>. Falls Du auch einzelne LF (entspricht CHAR(10)) oder CR (entsprcht CHAR(13)) ersetzen willst, kannst Du das Statement schachteln:

    SELECT REPLACE(REPLACE(REPLACE(DeinFeld, CHAR(13) + CHAR(10), '<br>'),
    CHAR(10), '<br>'), CHAR(13), '<br>')
        FROM DeineTabelle

    Wichtig ist dabei, dass Du die Kombination CRLF zuerst ersetzt, sonst bekommst Du zweimal <br>.

    Gruss
    Henry

    Freitag, 4. Mai 2012 06:01

Alle Antworten

  • Hallo Thomas,

    also beim mir in SSMS mit der Grid-Darstellung wird für ein Zeilenumbruch kein Kästchen angeuzeigt; SSMS Grid filtert das schon selbst raus, das wird eher ein anderes Sonderzeichen sein.

    Um das folgende zu testen, solltest Du die Ausgabe von Raster (Grid) in Text ändern, damit man es richtig sehen kann. Und ja, in T-SQL gibt es ein Äquivalent zu Chr(), nämlich Char():

    DECLARE @str nvarchar(100);
    SET @str = 
    N'Erste Zeile
    Zweite Zeile';
    
    SELECT @str;
    SELECT REPLACE(@str,  CHAR(13) + CHAR(10), '<br>');


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing


    Freitag, 4. Mai 2012 05:52
  • Hallo Thomas

    tommy_schroeder wrote:

    In einer meiner Tabellen stehen Strings mit Sonderzeichen (ein Kästchen,
    ist wohl ein Zeichenumbruch). Nun möchte ich in einer View das Zeichen ersetzen durch einen HTML-Tag (<br>).

    SELECT REPLACE(DeinFeld, CHAR(13) + CHAR(10), '<br>')
     FROM DeineTabelle

    Achtung: Zeilenumbruch ist nicht Zeilenumbruch. Es gibt mindestens 3 verschiedene Arten von Zeilenumbrüchen, welche Du wohl aus VB kennst: CR, LF und CRLF

    Obiges Beispiel ersetzt nur die CRLF durch <br>. Falls Du auch einzelne LF (entspricht CHAR(10)) oder CR (entsprcht CHAR(13)) ersetzen willst, kannst Du das Statement schachteln:

    SELECT REPLACE(REPLACE(REPLACE(DeinFeld, CHAR(13) + CHAR(10), '<br>'),
    CHAR(10), '<br>'), CHAR(13), '<br>')
        FROM DeineTabelle

    Wichtig ist dabei, dass Du die Kombination CRLF zuerst ersetzt, sonst bekommst Du zweimal <br>.

    Gruss
    Henry

    Freitag, 4. Mai 2012 06:01
  • Hallo Olaf, Hallo Henry,
     

    SELECT REPLACE(REPLACE(REPLACE(DeinFeld, CHAR(13) + CHAR(10), '<br>'), CHAR(10), '<br>'), CHAR(13), '<br>') FROM DeineTabelle


    Genau das wars - vielen Dank für Eure Hilfe.
     
    Gruß
     
    Thomas
     
     

    Sonntag, 6. Mai 2012 16:24