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