Ich habe keine ähnlichen Fragen zu diesem Thema gesehen und musste dies für etwas recherchieren, an dem ich gerade arbeite. Ich dachte, ich würde die Antwort darauf posten, falls jemand anderes die gleiche Frage hätte.
sql
sql-server
line-breaks
Mark Struzinski
quelle
quelle
Antworten:
char(13)
istCR
. FürCRLF
Zeilenumbrüche im DOS- / Windows-Stil möchten Sie Folgendeschar(13)+char(10)
:quelle
+
, beschwert sich SQL Server, dass Ihre Abfrage zu tief verschachtelt ist. Meine Lösung bestand stattdessen darin, Rob Coopers Antwort zu verwenden, jedoch mit einem viel längeren und dunkeleren Token.Ich fand die Antwort hier: http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in- Code/
Sie verketten einfach die Zeichenfolge und fügen eine Stelle ein,
CHAR(13)
an der Sie Ihren Zeilenumbruch wünschen.Beispiel:
Dies druckt Folgendes aus:
quelle
NCHAR(0x1234)
ein Unicode-Zeichen abrufen. Nicht zum Einfügen von Zeilenumbrüchen erforderlich, kann jedoch nützlich sein, wenn Unicode-Zeichen eingefügt / gesucht werden müssen.print
stattdessenselect
DECLARE @text NVARCHAR(100); SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.'; print @text;
Ein anderer Weg, dies zu tun, ist als solcher:
Das heißt, durch einfaches Einfügen eines Zeilenumbruchs in Ihre Abfrage während des Schreibens wird der Datenbank ein ähnlicher Zeilenumbruch hinzugefügt. Dies funktioniert in SQL Server Management Studio und Query Analyzer. Ich glaube, dass dies auch in C # funktioniert, wenn Sie das @ -Zeichen für Zeichenfolgen verwenden.
quelle
Führen Sie dies in SSMS aus. Es zeigt, wie Zeilenumbrüche in SQL selbst Teil von Zeichenfolgenwerten werden, die sich über Zeilen erstrecken:
Ergebnis:
Zeile 1
Zeile 2
Zeile 3
Wie lang ist ein Leerzeilenvorschub?
2
Was sind die ASCII-Werte?
13
10
Oder wenn Sie Ihre Zeichenfolge lieber in einer Zeile angeben möchten (fast!), Können Sie Folgendes verwenden
REPLACE()
(optionalCHAR(13)+CHAR(10)
als Ersatz verwenden):quelle
Nach einem Google ...
Den Code von der Website übernehmen:
Sieht so aus, als könnte man einen Platzhalter durch CHAR ersetzen (13).
Gute Frage, habe es nie selbst gemacht :)
quelle
Ich bin hierher gekommen, weil ich befürchtet hatte, dass in C # -Strings angegebene cr-lfs in den Abfrageantworten von SQl Server Management Studio nicht angezeigt werden.
Es stellt sich heraus, dass sie da sind, aber nicht angezeigt werden.
Verwenden Sie die print-Anweisung wie folgt, um die cr-lfs zu "sehen":
quelle
Hier ist eine C # -Funktion, die einem vorhandenen Text-Blob, der durch CRLFs begrenzt ist, eine Textzeile voranstellt und einen für
INSERT
oderUPDATE
Operationen geeigneten T-SQL-Ausdruck zurückgibt . Es enthält einige unserer proprietären Fehlerbehandlungen, aber wenn Sie diese herausreißen, kann es hilfreich sein - ich hoffe es.quelle
ich würde sagen
oder
quelle
Das ist immer cool, denn wenn Sie exportierte Listen von beispielsweise Oracle erhalten, erhalten Sie Datensätze, die mehrere Zeilen umfassen, was wiederum beispielsweise für Lebenslaufdateien interessant sein kann. Seien Sie also vorsichtig.
Wie auch immer, Robs Antwort ist gut, aber ich würde empfehlen, etwas anderes als @ zu verwenden, ein paar mehr zu versuchen, wie §§ @@ §§ oder so, damit es eine Chance für eine Einzigartigkeit gibt. (Denken Sie jedoch an die Länge des Felds
varchar
/nvarchar
, in das Sie einfügen.)quelle
Alle diese Optionen funktionieren abhängig von Ihrer Situation, aber wenn Sie SSMS verwenden , sehen Sie möglicherweise keine davon (wie in einigen Kommentaren erwähnt, versteckt SSMS CR / LFs).
Aktivieren Sie diese Einstellung, anstatt sich selbst um die Kurve zu fahren
Tools
|
Options
quelle