Nichtnumerische Zeichen aus einem String entfernen

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!

Noch kein Feedback
Einen Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.
SchlechtExzellent
(Zeilenumbrüche werden zu <br />)
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)
Trackback-Adresse für diesen Eintrag
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)