En général, je suggérerais d'écrire une fonction CLR qui divise les chaînes par regex ou fonction table SQL, mais dans votre cas, vous pouvez essayer quelque chose de simple comme convertir votre chaîne en xml et l'analyser :
declare @str nvarchar(max) = 'date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8'
declare @data xml
select @str = replace(@str, '=', '="')
select @str = replace(@str, '|', '" ')
select @str = replace(@str, '^', '"/><row ')
select @str = '<row ' + @str + '"/>'
select @data = cast(@str as xml)
select
t.c.value('@date', 'nvarchar(max)') as [date],
t.c.value('@age', 'nvarchar(max)') as [age]
from @data.nodes('row') as t(c)