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...
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...
In SQL Server 2017 und höher verwenden Sie Trimmen
Select Trim(char(10) + char(13) from @str)
Ich verwende es, um Sonderzeichen für einen Dateinamen zu kürzen
Select Trim(char(10) + char(13) + ' *<>' from @fileName)
Wenn der Datentyp Ihrer Spalte ' Text ', erhalten Sie eine Fehlermeldung wie
Msg 8116, Level 16, State 1, Zeile 2 Argument Datentyp Text ist ungültig für Argument 1 der replace-Funktion.
In diesem Fall müssen Sie den Text als nvarchar umwandeln und dann ersetzen
SELECT REPLACE(REPLACE(cast(@str as nvarchar(max)), CHAR(13), ''), CHAR(10), '')
Ok, das sieht toll aus. Was aber, wenn das, was ich zu ersetzen versuche, "!crlf" ist, und ja, das ist ein Leerzeichen nach dem !crlf. Die Sorge ist, dass dies in der Mitte der Zeichenfolge auftritt, könnte ich weg mit: SELECT REPLACE(REPLACE(cast(@str as nvarchar(MAX)), CHAR(33), CHAR(13), CHAR(10), CHAR(32), '') oder habe ich das falsch geschrieben? Die Zeichenfolge sieht wie folgt aus: ermöglicht entfernten Angreifern die Umgehung eines Sandbox-Schutzmechanismus und die Erlangung von Privilegien über eine manipulierte Website, auf die mit Internet Explorer zugegriffen wird, wobei der Schwerpunkt auf dem Wort "t! hat" liegt.
Ich wollte den Inhalt einer Spalte zu bereinigen, um eine CSV-Datei zu generieren, so wollen loszuwerden, das Komma (,) innerhalb der varchar sowie Newline und Carrage-Return.
Ich wollte auch schließlich die generierte Csv verwenden, um ein anderes Skript zu erstellen (um Zeilen in eine andere DB einfügen), so auch benötigt, um ' innerhalb der varchar zu '' zu ändern, so endete mit diesem...
REPLACE(REPLACE(REPLACE(REPLACE(ErrorMessage, CHAR(13), ''), CHAR(10), ''),',',''),'''','''''')
Es mag andere, schönere Wege geben, aber es hat seine Aufgabe erfüllt.
Wenn Sie ein Problem haben, bei dem Sie nur die folgenden Punkte entfernen möchten nachlaufend Zeichen, können Sie dies versuchen:
WHILE EXISTS
(SELECT * FROM @ReportSet WHERE
ASCII(right(addr_3,1)) = 10
OR ASCII(right(addr_3,1)) = 13
OR ASCII(right(addr_3,1)) = 32)
BEGIN
UPDATE @ReportSet
SET addr_3 = LEFT(addr_3,LEN(addr_3)-1)
WHERE
ASCII(right(addr_3,1)) = 10
OR ASCII(right(addr_3,1)) = 13
OR ASCII(right(addr_3,1)) = 32
END
Damit wurde ein Problem gelöst, das ich mit Adressen hatte, bei denen eine Prozedur ein Feld mit einer festen Anzahl von Zeilen erzeugte, auch wenn diese Zeilen leer waren. Um Platz in meinem SSRS-Bericht zu sparen, habe ich sie gekürzt.
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.