如何使用 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_preparedocumentsp_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 |
+------+