519 Stimmen

Ersetzen eines Zeilenumbruchs in TSQL

Ich möchte ein Zeilenumbruchszeichen in einem TSQL-String ersetzen (oder entfernen). Irgendwelche Ideen?

Das Offensichtliche

REPLACE(@string, CHAR(13), '')

wird es einfach nicht tun...

1voto

Rohan Punkte 11

Wenn Sie eine offene Prozedur mit sp_helptext haben, dann kopieren Sie einfach den ganzen Text in eine neue SQL-Abfrage und drücken Sie die Taste ctrl+h. Verwenden Sie einen regulären Ausdruck, um zu ersetzen und setzen Sie ^ \n im Suchfeld durch Leerzeichen ersetzen. Für weitere Details siehe Bild. Bildbeschreibung hier eingeben

1voto

Grigory Kislin Punkte 14348

Zu @Cerebrus Lösung: für H2 wird für Strings "+" nicht unterstützt. Also:

REPLACE(string, CHAR(13) || CHAR(10), 'replacementString')

0voto

Mike Punkte 1

Die Antwort, die oben/früher gepostet wurde, sollte CHAR(13)CHAR(10) Wagenrücklauf ersetzen:

REPLACE(REPLACE(REPLACE(MyField, CHAR(13) + CHAR(10), 'something else'), CHAR(13), 'something else'), CHAR(10), 'something else')

Wird nie zum REPLACE(MyField, CHAR(13) + CHAR(10), 'something else') Teil des Codes und liefert das unerwünschte Ergebnis von:

'something else''something else'

Und NICHT das gewünschte Ergebnis eines Singles:

'something else'

Dazu müsste das REPLACE-Skript als solches umgeschrieben werden:

REPLACE(REPLACE(REPLACE(MyField, CHAR(10), 'something else'), CHAR(13), 'something else'), CHAR(13) + CHAR(10), 'something else')

Der Ablauf testet zunächst die 1./weiteste linke REPLACE-Anweisung und fährt dann bei einem Fehlschlag mit der Prüfung der nächsten REPLACE-Anweisung fort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X