--===== Create and populate the Tally table on the flySELECT TOP 11000 --equates to more than 30 years of dates IDENTITY(INT,1,1) AS N INTO dbo.Tally FROM MASTER.dbo.SysColumns sc1, MASTER.dbo.SysColumns sc2 --===== Add a Primary Key to maximize performanceALTER TABLE dbo.Tally ADD CONSTRAINT PK_Tally_N PRIMARY KEY CLUSTERED (N) WITH FILLFACTOR = 100GOCREATE FUNCTION StripNonNumeric(@OriginalText VARCHAR(8000))RETURNS VARCHAR(8000) BEGIN DECLARE @CleanedText VARCHAR(8000) SELECT @CleanedText = ISNULL(@CleanedText,'') + CASE --ascii numbers are 48(for '0') thru 57 (for '9') WHEN ASCII(SUBSTRING(@OriginalText,Tally.N,1)) BETWEEN 48 AND 57 THEN SUBSTRING(@OriginalText,Tally.N,1) ELSE '' END FROM dbo.Tally WHERE Tally.N <= LEN(@OriginalText) RETURN @CleanedText ENDGOSELECT dbo.StripNonNumeric('Alex is 25 years old on 01/14/2008') --results 2501142008