通常,我建议编写一个CLR函数,该函数通过regex或SQL表值函数拆分字符串,但是在这种情况下,您可以尝试一些简单的操作,例如将字符串转换为xml并进行解析:
declare @str nvarchar(max) = 'date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8'declare @data xmlselect @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)sql fiddle demo



