Nichtnumerische Zeichen aus einem String entfernen

By Frank Kalis

Posted on Nov 26, 2004 von in SQL Server

Das Problem hat wahrscheinlich jeder schon einmal gehabt. Man stellt Importanforderungen auf, und die Anwender kümmern sich nicht darum und liefern anstelle von sauber getrennten Strings und Zahlen einen bunten Mischmasch aus beidem.

Nachdem man den ersten Reflex überstanden hat, und nicht in das Büro des Anwenders gegangen ist, wie würde man dieses Problem in T-SQL lösen? Nun, vielleicht am besten gar nicht, da man irgendeine Skriptsprache über die Daten laufen lassen könnte. Aber wenn es unbedingt auf dem Server gemacht werden sollte (oder muß), wie?

Ein Lösungsansatz ist die Verwendung einer UDF:

CREATE FUNCTION dbo.RemoveChars(@Input varchar(1000))
 RETURNS VARCHAR(1000)
 BEGIN
  DECLARE @pos INT
  SET @Pos = PATINDEX('%[^0-9]%',@Input)
  WHILE @Pos > 0
   BEGIN
    SET @Input = STUFF(@Input,@pos,1,'')
    SET @Pos = PATINDEX('%[^0-9]%',@Input)
   END
  RETURN @Input
END
GO

Diese liefert dann beim Aufruf

SELECT dbo.RemoveChars('a1sdsad124325143gffdfd4dgsf')
                     
-------------------- 
11243251434

(1 row(s) affected)

Danke an Jonathan van Houtte!

Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: , , , ,

Noch kein Feedback


Formular wird geladen...