我正在收到asp.net网络服务的回复,如下面所述。我想以年龄列中的年龄和日期列中的日期的表格格式转换它。我之前已经问过这个问题,但是现在它是一个字符串,现在在xml中得到o / p我该怎么办?
以这种格式获取@response中的响应输出:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://abc.org/">age=7|Date=15/04/2006^age=5|Date=15/04/2008</string>
如何使用存储过程将其拆分为sql server 2008中的行列格式。我将@response作为上述表单但无法使用我正在执行的方式。任何人都可以帮助我。
答案 0 :(得分:2)
使用您选择的string split function并在^
首先和|
秒后分开。之后,您可以使用pivot
将数据添加到列中。
declare @XML xml = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://abc.org/">age=7|Date=15/04/2006^age=5|Date=15/04/2008</string>';
with xmlnamespaces(default 'http://abc.org/')
select P.age,
P.Date
from (
select S1.ID,
left(S2.Item, charindex('=', S2.Item) - 1) ColName,
stuff(S2.Item, 1, charindex('=', S2.Item), '') Value
from SplitString(@XML.value('string[1]', 'varchar(max)'), '^') as S1
cross apply SplitString(S1.Item, '|') as S2
) as X
pivot
(
min(X.Value)
for X.ColName in (age, Date)
) as P;
答案 1 :(得分:0)
如果要在SQL Server中执行此操作,则必须编写一个.NET CLR存储过程来读取文本字符串,将其拆分为“|”字符,然后插入/分配给您的表/对象。请参阅此文http://msdn.microsoft.com/en-us/library/5czye81z(v=vs.90).aspx