2010-11-30 8 views
1

Ich habe einige Daten, die in einer VARCHAR(MAX) Spalte gespeichert ist, die die Steuerzeichen enthält CR & LF (CHAR (10) & CHAR (13)).Schließen Sie Wagenrücklauf bei der Berechnung von Teilzeichenfolge

Ich habe einige Anfangs- und Endpositionsnummern, die ich verwenden muss, um eine Teilzeichenfolge aus dem Text zu extrahieren - aber wenn ich SUBSTRING verwende, werden diese Steuerzeichen ignoriert, was dazu führt, dass die Teilzeichenfolge falsch extrahiert wird.

Ich schrieb eine Abfrage mit einem CTE, das alle Instanzen von CRLF durch ein anderes Zeichen (¬¬) ersetzte und dann funktioniert der Teilstring korrekt - allerdings muss ich die CRLFs im Text behalten, wie sie für Anzeigezwecke verwendet werden.

Kann mir jemand einen Weg vorstellen, wie ich die SUBSTRING-Funktion dazu bringen kann, die Steuerzeichen einzuschließen, wenn sie berechnet, welcher Teil der Zeichenkette extrahiert werden soll?

+0

Können Sie uns Ihren nicht funktionierenden Code zeigen, der 'SUBSTRING' verwendet? – Gabe

+0

Dumme Frage - hast du schon versucht, sie durch andere Zeichen zu ersetzen? ZB Char 10 w/¬ und Char 13 mit etwas anderem? Dann würdest du wissen, wie man sie umkehrt. – Matt

+0

Ich denke, richtiger, dass die Offsets, die Sie verwenden möchten, berechnet wurden, CRLF ignorierend, anstatt SUBSTRING Dinge falsch zu machen - woher kommen Ihre SUBSTRING Offset- und Längenzahlen und können sie korrigiert werden? –

Antwort

2

Die SQL Server-Version von substring behandelt CRLF wie andere Zeichen. Zum Beispiel:

select substring('123' + char(10) + char(13) + '678',1,3) 
--> 
123 

select substring('123' + char(10) + char(13) + '678',4,2) 
--> 
\r\n 

select substring('123' + char(10) + char(13) + '678',6,3) 
--> 
678 

Überprüfen Sie den Code wieder, oder ein spezifischeres Beispiel für Post, wo substring nicht wie erwartet funktionieren.

Verwandte Themen