• Don't really know if there is a best way. It depends on volume and type of data. You only gave example of 3 rows with one character data. The only way I know is to use loops, either a cursor and loop for each char or the following for a set based solution.

    Note, this solution will remove the text from the text fields in TABLE_A.

    declare @CT int

    set @CT = 1

    while @CT > 0

    begin

    insert into TABLE_B select SUBSTRING(THE_TEXT,1,CHARINDEX(',',THE_TEXT)-1) from TABLE_A where CHARINDEX(',',THE_TEXT)>0

    update TABLE_A set THE_TEXT = SUBSTRING(THE_TEXT,CHARINDEX(',',THE_TEXT)+1,DATALENGTH(THE_TEXT)-CHARINDEX(',',THE_TEXT)+1) where CHARINDEX(',',THE_TEXT)>0

    select @CT = count(*) from TABLE_A where CHARINDEX(',',THE_TEXT)>0

    end

    insert into TABLE_B select THE_TEXT from TABLE_A where DATALENGTH(THE_TEXT)>0

    select * from TABLE_B order by THE_VALUE

    Far away is close at hand in the images of elsewhere.
    Anon.