Here is the script, this gives multiple columns and rows from single string value.
declare @inputData varchar(Max) = 'Victor:2;John:22;Jo:100' + ';'
;with row(c1,c2)
as
(
SELECT LEFT
( @inputData
, CHARINDEX(';', @inputData, 0) - 1
) col1
, SUBSTRING
( @inputData
, CHARINDEX(';', @inputData, 0) + 1
, LEN(@inputData)
) col2
UNION ALL
SELECT LEFT
( c2
, CHARINDEX(';', c2, 0) - 1
) col1
, SUBSTRING
( c2
, CHARINDEX(';', c2, 0) + 1
, LEN(c2)
) col2
FROM row
WHERE CHARINDEX(';', c2, 0) >0
)
select LEFT(C1, CHARINDEX(':', c1, 0) - 1) col1, SUBSTRING( c1 , CHARINDEX(':', c1, 0) + 1, LEN(c1)) col2 from row
Output :
col1 col2
Victor 2
John 22
Jo 100