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 !
In SQL Server 2016 wurde das sog. dynamic data masking eingeführt. Eine Möglichkeit Daten bei…
Seit Sharepoint Server 2007 präsentiert sich die Installation immer auf die gleiche Weise. Gerade mal,…
Es weihnachtet! Gerade bekam ich von einer Kollegin Plätzchen angeboten mit der Größe eines Diskus…
Nein, bitte nicht verwechseln: temporal tables haben nichts zu tun mit temporary tables table variables…
SQL Server 2016.. habe ich schon erwähnt, dass ich den ziemlich cool finde? Wollen wir…
Nach langer Zeit wieder mal eine Artikel von mir.. der mich besonders erfreut. SQL Server…