在 sql 中输入 xml - 这可能吗?
我有一个带有类型化 XML 字段的表。典型的 XML 格式是:
<root>
<users>
<user name="John Doe" />
<user name="Alexander" />
</users>
<apps>
<app name="Office 2010" />
<app name="SQL Server 2005" />
<apps>
</root>
假设该表有 25 行,users 和 apps 元素中的值不同,有没有办法:
- 检索 /root/users 元素中所有记录的所有用户列表。
- 检索所有记录的所有用户+应用程序的列表。
此行上的 SQL 可以工作,但只给我第一个用户名。
SELECT xtbl.col1.value('(user/@name)[1]', 'varchar(100)')
FROM mytable
CROSS APPLY xmlcol.nodes('/root/users') AS xtbl(col1)
I've a table with a typed XML field. Typical XML format is:
<root>
<users>
<user name="John Doe" />
<user name="Alexander" />
</users>
<apps>
<app name="Office 2010" />
<app name="SQL Server 2005" />
<apps>
</root>
Assuming this table has 25 rows with different values in the users and apps elements, is there a way to:
- Retrieve the list of all users in the /root/users element for all the records.
- Retrieve the list of all users + application for all the records.
SQL on this line works but gives me only first user name.
SELECT xtbl.col1.value('(user/@name)[1]', 'varchar(100)')
FROM mytable
CROSS APPLY xmlcol.nodes('/root/users') AS xtbl(col1)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
nodes
函数为每个用户
选择一行,但您正在寻找每个用户
一行。尝试:The
nodes
function is selecting one row perusers
, but you're looking for one row peruser
. Try: