簡體   English   中英

從SQL Server中的XML獲取XML列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM