Quantcast
Viewing latest article 1
Browse Latest Browse All 10

Answer by dvroman

I wrote this for a much simpler extraction, but the idea should work. /***************************************************************** **** Parse A Delimited String Into A Table *****************************************************************/ CREATE FUNCTION dbo.ParseByChar ( @Separator VARCHAR(20), @String VARCHAR(MAX) ) RETURNS @TblSubString TABLE ( VarSubString VARCHAR(10) ) AS BEGIN DECLARE @intPos INT, @SubStr VARCHAR(10) -- Find The First Separator SET @IntPos = CHARINDEX(@Separator, @String) -- Loop Until There Is Nothing Left Of @String WHILE @IntPos > 0 BEGIN -- Extract The String SET @SubStr = SUBSTRING(@String, 0, @IntPos) -- Insert The String Into The Table INSERT INTO @TblSubString (VarSubString) VALUES (@SubStr) -- Remove The String & Separator From The Original SET @String = SUBSTRING(@String, LEN(@SubStr) + 2, LEN(@String) - LEN(@SubStr) + 1) -- SET @String = REPLACE(@String, @SubStr + ',', '', 1) -- Get The New Index To The String SET @IntPos = CHARINDEX(@Separator, @String) END -- Return The Last One INSERT INTO @TblSubString (VarSubString) VALUES (@String) RETURN END The call should be: SELECT * FROM dbo.ParseByChar('|200911_s^3^', '2|200911_s^3^1988415|20091452_s^3^1988411|2009152_s^3^1988455|') Needs some cleaning up, but the concept should work.

Viewing latest article 1
Browse Latest Browse All 10

Trending Articles