TSQL – Der bessere Replace

Ab und zu sieht man den Wald vor lauter Bäumen nicht. Dieses mal stand ich vor der Aufgabe aus einer Spalte bestimmte Werte zu ersetzen. Die Liste der zu ersetzenden Werte war doch etwas länger. Mit einem simplen replace komme ich nicht besonders weit, da sich ja nur ein Wert ersetzen läßt.  Grübel grübel.. Doch es ist ganz simpel.

Das Prinzip:

Wir weisen  einer Variablen einen per Replace bereinigten  Wert zu.  Anschliessend wird auf das Ergebnis wiederum ein weiterer Replace angewendet (mit einem anderen zu ersetzenden Wert) und dann wiederum der Variable zugewiesen.das machen wir solange bis alle zu erstzendenen Werte durchgekaut haben.  Das geht pfeilschnell.

Das ganze packen wir noch in eine Funktion und schon haben wir einen besseren Replace:

CREATE FUNCTION  dbo.BetterReplace (@str NVARCHAR(4000))
RETURNS nVARCHAR(4000) AS
BEGIN
SET @str = REPLACE (@str,‘>‘,‘ ‚)
SET @str = REPLACE (@str,‘;‘,‘ ‚)
SET @str = REPLACE (@str,’&‘,‘ ‚)
SET @str = REPLACE (@str,‘:‘,‘ ‚)
SET @str = REPLACE (@str,'<‚,‘ ‚)
SET @str = REPLACE (@str,’/‘,‘ ‚)
SET @str = REPLACE (@str,“,‘ ‚)
SET @str = REPLACE (@str,‘,‘,‘ ‚)
SET @str = REPLACE (@str,’*‘,‘ ‚)
SET @str = REPLACE (@str,’^‘,‘ ‚)
SET @str = REPLACE (@str,’ü‘,’ue‘)
SET @str = REPLACE (@str,’ä‘,’ae‘)
SET @str = REPLACE (@str,’ö‘,’oe‘)
SET @str = REPLACE (@str,'“‚,‘ ‚)

  RETURN @str
END

Zum Beispiel:

declare @str as varchar(100)
set @str='<Tel>+498677-98890′

select dbo.BetterReplace (@str)

Ergebnis:

Tel +49 8677-98890

Einfach und wirklungsvoll !

Author: Fumus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert