Here is a piece of code that you might like to start with,<br>I have not tested or run it (just typed into notepad !!) , but it might give you a <br>starting position. You might want to add some print a<br>statements in order to see what it is doing. The Position integers <br>might also need a bit of tweeking.<br><br>DECLARE @StringToProcess VARCHAR(255)<br>DECLARE @SemiPosition INTEGER<br>DECLARE @StartPosition INTEGER<br>DECLARE @NewStringPiece VARCHAR(50)<br><br>DECLARE myCursor CURSOR for <br> Select MyField from Table<br><br>OPEN myCursor <br><br>FETCH NEXT FROM myCursor INTO<br> @StringToProcess<br><br>WHILE @@FETCH_STATUS = 0<br>BEGIN<br><br> SELECt @StartPosition = 0<br><br> -- Search for the first semi colon<br> SELECT @SemiPosition = CHARINDEX(';',@StringToProcess, @StartPosition)<br> <br> -- NOTE cant remember what CHARINDEX returns if string is not found<br> -- might be NULL<br> While @SemiPosition <> 0<br> BEGIN<br><br> -- Get the piece of string<br> SELECT @NewStringPiece = SUBSTRING(@StringToProcess, @StartPosition, @SemiPosition - @StartPosition)<br><br> -- DO something with new string<br> INSERT INTO NewTable <br> Values (@NewStringPiece )<br><br> -- increment startposition to next piece <br> -- of string<br> SELECT @StartPosition = SemiPosition + 1<br><br> -- Get Next semi colon<br> SELECT @SemiPosition = CHARINDEX(';', @StringToProcess, @StartPosition)<br> END<br><br><br> FETCH NEXT FROM myCursor INTO<br> @StringToProcess<br>END<br><br>CLOSE myCursor <br>DEALLOCATE myCursor <br><br>Let me know if this helps.