如何使用 openXML 获取 xml 节点的所有可能值?
How to get all possible values of a xml node using openXML?
如何获取所有不固定的单元格值。可能存在 n 次。
下面查询结果100,应该是100, 200.
DECLARE @XML AS XML= '<Rows>
<cells>
<cell>100</cell>
<cell>200</cell>
</cells>
</Rows>'
DECLARE @hDoc AS INT
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT * FROM OPENXML(@hDoc, '/Rows/cells',2)
With(cell int))
EXEC sp_xml_removedocument @hdoc;
Microsoft 专有 OPENXML
及其伙伴 sp_xml_preparedocument
和 sp_xml_removedocument
的保留只是为了与过时的 SQL Server 2000 向后兼容。它们的使用已减少到非常多少数边缘案例。
从 SQL Server 2005 开始,强烈建议 re-write 您的 SQL 并将其切换到 XQuery。
SQL
DECLARE @XML AS XML= '<Rows>
<cells>
<cell>100</cell>
<cell>200</cell>
</cells>
</Rows>';
SELECT c.value('.', 'INT') AS cell
FROM @XML.nodes('/Rows/cells/cell/text()') AS t(c);
输出
+------+
| cell |
+------+
| 100 |
| 200 |
+------+
如何获取所有不固定的单元格值。可能存在 n 次。 下面查询结果100,应该是100, 200.
DECLARE @XML AS XML= '<Rows>
<cells>
<cell>100</cell>
<cell>200</cell>
</cells>
</Rows>'
DECLARE @hDoc AS INT
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT * FROM OPENXML(@hDoc, '/Rows/cells',2)
With(cell int))
EXEC sp_xml_removedocument @hdoc;
Microsoft 专有 OPENXML
及其伙伴 sp_xml_preparedocument
和 sp_xml_removedocument
的保留只是为了与过时的 SQL Server 2000 向后兼容。它们的使用已减少到非常多少数边缘案例。
从 SQL Server 2005 开始,强烈建议 re-write 您的 SQL 并将其切换到 XQuery。
SQL
DECLARE @XML AS XML= '<Rows>
<cells>
<cell>100</cell>
<cell>200</cell>
</cells>
</Rows>';
SELECT c.value('.', 'INT') AS cell
FROM @XML.nodes('/Rows/cells/cell/text()') AS t(c);
输出
+------+
| cell |
+------+
| 100 |
| 200 |
+------+