我假設我的問題的答案將是簡單的,我不知道自己。下面是這種情況:選擇XML節點作爲屬性
我使用SQL Server 2008 R2中,其中一個表有其中數據被保存在以下格式的XML列:
<Person>
<firstName>John</firstName>
<lastName>Lewis</lastName>
</Person>
的Person
節點可以有任意數量的兒童安全元素名稱可能不同的節點(事先不知道)。我正在查找一個查詢來返回一個XML,它將所有節點的值作爲屬性。
所以輸出爲上述XML應該是:
<Person firstName="John" lastName="Lewis"/>
我想不出一個查詢來獲取上述輸出。我不想使用查詢像
Select
PersonColumn.value('(/Person/firstName)[1]', 'varchar(100)') AS '@firstName'
, PersonColumn.value('(/Person/lastName)[1]', 'varchar(100)') AS '@lastName'
FROM MyTable
WHERE MyTable.MyPrimaryKey=1
FOR XML PATH('Person'), TYPE
,因爲我不知道會出現什麼節點Person
節點下。
你說「* Person節點可以有任何數量的名字可能不同的後代*」。請提供一個例子(具有不同名稱的多個後代),以及您期望的結果。你提供的單一後代的例子是沒有用的。 – RBarryYoung
我的意思是Person節點可能不只有firstName和lastName。它可以有更多的節點,但沒有一個節點會重複,即firstName只會出現一次。我希望這更清楚。 Descendant這個詞可能會讓你感到困惑。我的例子顯示了2個後代人是名字和姓氏。也許更合適的術語應該是兒童節點。 – Wiz
啊,你想知道*元素*的名字是未知的嗎? – RBarryYoung