如果您有此 XML:
<people>
<person id="1">
<firstname>John</firstname>
<surname>Doe</surname>
</person>
<person id="2">
<firstname>Mary</firstname>
<surname>Jane</surname>
</person>
</people>
你想要这张 table :
id firstname surname
--- ---------- ----------
1 John Doe
2 Mary Jane
您将如何使用 T-SQLXML 获取它?
并加入 Spanner :假设您知道 <person>
的深度, <firstname>
和 <surname>
元素,但你不知道它们叫什么!
如果您认为将其发布到 reddit 上更好,请随意喷火:)
最佳答案
我建议使用 XQuery 接口(interface),而不是相当笨重的旧 OPENXML 方法:
SELECT
Ppl.Person.value('(@id)[1]', 'int') AS 'ID',
Ppl.Person.value('(firstname)[1]', 'varchar(20)') AS 'First Name',
Ppl.Person.value('(surname)[1]', 'varchar(20)') AS 'Last Name'
FROM
@input.nodes('/people/person') as Ppl(Person)
这是在 SQL Server 2005 及更高版本中执行此操作的首选方法。
输出是一样的:
ID First Name Last Name
1 John Doe
2 Mary Jane
但是,如果您不了解 XML 结构,您将无法真正做到这一点......
关于xml - 挑战 - 将 XML 处理成 T-SQL 表结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188200/