आम तौर पर, मैं एक सीएलआर फ़ंक्शन लिखने का सुझाव दूंगा जो रेगेक्स या एसक्यूएल टेबल-वैल्यू फ़ंक्शन द्वारा स्ट्रिंग्स को विभाजित करता है, लेकिन आपके मामले में आप कुछ सरल कोशिश कर सकते हैं जैसे अपनी स्ट्रिंग को एक्सएमएल में कनवर्ट करना और इसे पार्स करना:
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)