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!