【问题标题】:Key Value Pair XML (SQL Server 2005)键值对 XML (SQL Server 2005)
【发布时间】:2014-02-25 09:14:44
【问题描述】:

我目前正在使用这个:

SELECT Column1, Column2
FROM SomeTable 
FOR XML PATH(''), ROOT('KeyValuePairs')

制作这个:

<KeyValuePairs>
<Column1>ColumValue1</Column1>
<Column2>ColumValue1</Column2>
</KeyValuePairs>

有没有办法产生这样的更具描述性的东西:

<KeyValuePairs>
<KeyValuePair><Key>Column1</Key><Value>ColumValue1</Value></KeyValuePair>
<KeyValuePair><Key>Column2</Key><Value>ColumValue2</Value></KeyValuePair>
</KeyValuePairs>

【问题讨论】:

    标签: sql-server tsql sql-server-2005 sqlxml


    【解决方案1】:
    SELECT (
           SELECT 'Column1' AS [Key],
                  T.Column1 AS Value
           FOR XML PATH('KeyValuePair'), TYPE
           ),
           (
           SELECT 'Column2' AS [Key],
                  T.Column2 AS Value
           FOR XML PATH('KeyValuePair'), TYPE
           )
    FROM SomeTable AS T
    FOR XML PATH('KeyValuePairs')
    

    替代方案:

    SELECT  'Column1' AS [KeyValuePair/Key],
            T.Column1 AS [KeyValuePair/Value],
            NULL,
            'Column2' AS [KeyValuePair/Key],
            T.Column2 AS [KeyValuePair/Value]
    FROM SomeTable AS T
    FOR XML PATH('KeyValuePairs')
    

    【讨论】:

    • @csetzkorn 如果你能解释它的错误之处,我可以让它为你工作。
    • 有两列,因此有 2 个键值对,而不仅仅是你的情况。
    • @csetzkorn 我明白了,更新了答案。当SomeTable 中有不止一行时,不确定您想要 XML 的方式。这将为您的每一行提供一个KeyValuePairs 节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多