繁体   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