如果你有这个XML:
<people>
<person id="1">
<firstname>John</firstname>
<surname>Doe</surname>
</person>
<person id="2">
<firstname>Mary</firstname>
<surname>Jane</surname>
</person>
</people>
Run Code Online (Sandbox Code Playgroud)
你想要这张桌子:
id firstname surname
--- ---------- ----------
1 John Doe
2 Mary Jane
Run Code Online (Sandbox Code Playgroud)
你会如何使用T-SQLXML获得它?
并抛出一个扳手到组合:比方说,你知道的深度<person>,<firstname>和<surname>元素,但你不知道他们叫什么!
如果你觉得这个更好贴到reddit,请随意火焰:)
我建议使用XQuery接口,而不是相当笨重的旧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)
Run Code Online (Sandbox Code Playgroud)
这是在SQL Server 2005和转发中执行此操作的首选方法.
输出是一样的:
ID First Name Last Name
1 John Doe
2 Mary Jane
Run Code Online (Sandbox Code Playgroud)
但是,如果您不了解XML结构,则无法真正做到这一点.....
| 归档时间: |
|
| 查看次数: |
3016 次 |
| 最近记录: |