[英]Get XML column from XML in SQL Server
我需要從XML獲取帶有Address
XML列的表。
這是我做的:
DECLARE @Person xml='<Person PersonID="a1fee068-aad4-459b-8ea7-063975f17bed">
<Address State="1" District="15" House="test" Additional="1" />
<Address State="8" District="11" Region="12" Neighborhood="13" Block="14" House="75" Additional="somewhere" />
</Person>'
DECLARE @handle INT
DECLARE @PrepareXmlStatus INT
EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @Person
SELECT *
FROM
OPENXML(@handle, '/Person', 2)
WITH (
Address xml
)
EXEC sp_xml_removedocument @handle
結果只是XML中的第一個Address
。 我不明白為什么....
有關如何使用Address
標記獲取所有記錄的任何建議
您可以使用這樣的XML查詢:
DECLARE @Person xml=' <Person PersonID="a1fee068-aad4-459b-8ea7-063975f17bed"> <Address State="1" District="15" House="test" Additional="1" /> <Address State="8" District="11" Region="12" Neighborhood="13" Block="14" House="75" Additional="somewhere" /> </Person>' SELECT data.value('./@State', 'int') as State, data.value('./@District', 'int') as District, data.value('./@House', 'nvarchar(50)') as House, data.value('./@Additional', 'nvarchar(50)') as Additional, data.value('./@Region', 'int') as Region, data.value('./@Neighborhood', 'int') as Neighborhood, data.value('./@Block', 'int') as Block FROM @Person.nodes('/Person/Address') AS t1(data);
\n 國家| 區| 房子| 附加| 地區| 鄰里| 塊\n ----:| -------:| :---- | :--------- | -----:| -----------:| ----:\n 1 | 15 | 測試| 1 | null | null | 空值\n 8 | 11 | 75 | 某處| 12 | 13 | 14\n\n
如果你想要每個地址塊:
\n SELECT data.query('。')\n FROM @ Person.nodes('/ Person / Address')AS t1(數據)\n 走\n\n | (沒有列名)|\n | :------------------------------------------------- -------------------------------------------------- ---------- |\n | <地址狀態=“1”區=“15”House =“test”附加=“1”/> |\n | <Address State =“8”District =“11”Region =“12”Neighborhood =“13”Block =“14”House =“75”Additional =“somewhere”/> |\n
dbfiddle 在這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.