• Would it be ok for you to use recursive CTE ? ..something like

    create table #Something

    (

    CityRank int,

    Country varchar(10),

    City varchar(200)

    )

    insert #Something

    select 1, 'india', 'hyderabad, bangalore, delhi, shimla' union all

    select 2, 'usa', 'newjersey, newyork, washington, texas' union all

    select 3, 'uk', 'london, greenland, denmark, italy, spain'

    --SELECT * FROM #Something

    ;WITH CTE AS

    (

    SELECT CityRank,Country,City,SUBSTRING(CITY,1,CHARINDEX(',',CITY,1)-1) AS C_CITY,

    SUBSTRING(CITY,CHARINDEX(',',CITY,1)+1,LEN(CITY)) AS C_STR FROM #Something

    UNION ALL

    SELECT CityRank,Country,City,LTRIM(RTRIM(SUBSTRING(C_STR,1,CASE

    WHEN CHARINDEX(',',C_STR,1) = 0 THEN LEN(C_STR)

    ELSE CHARINDEX(',',C_STR,1) - 1

    END ))),

    SUBSTRING(C_STR,CASE

    WHEN CHARINDEX(',',C_STR,1) = 0 THEN NULL

    ELSE CHARINDEX(',',C_STR,1)+1

    END,CASE

    WHEN LEN(C_STR) = 0 THEN 1

    ELSE LEN(C_STR)

    END) FROM CTE

    WHERE CHARINDEX(',',C_STR,1) >= 0 --OR

    )

    SELECT CityRank,Country,C_CITY AS CITY FROM CTE ORDER BY CityRank

    I'm sorry for the formatting/colors ..as this is my first post and do not know how to post with SQL formatting being intact