1

我收到了来自 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 作为上述形式,但无法使用我正在做的方式。有谁能够帮我。

4

2 回答 2

2

使用您选择的字符串拆分功能^并在第一个和|第二个拆分。之后,您可以使用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;

SQL小提琴

于 2013-08-26T13:30:51.647 回答
0

如果您想在 SQL Server 中执行此操作,则必须编写一个 .NET CLR 存储过程来读取您的文本字符串,并用“|”分隔它 字符,然后将其插入/分配给您的表/对象。请参阅这篇文章http://msdn.microsoft.com/en-us/library/5czye81z(v=vs.90).aspx

于 2013-08-26T12:20:43.057 回答