.net – 从SQL XML列中的元素中获取属性的名称
发布时间:2020-12-12 08:30:23 所属栏目:MsSql教程 来源:网络整理
导读:对于此xml(在SQL 2005 XML列中): doc a1/a b ba="1" bb="2" bc="3" / c bd="3"/doc 我希望能够检索属性(ba,bb,bc,bd)的名称,而不是SQL Server 2005中的值.好吧,XPath肯定允许使用name(),但SQL不支持.这是我在SQL中使用XML的主要抱怨;你必须弄清楚XML / Xpath
对于此xml(在SQL 2005
XML列中):
<doc> <a>1</a> <b ba="1" bb="2" bc="3" /> <c bd="3"/> <doc> 我希望能够检索属性(ba,bb,bc,bd)的名称,而不是SQL Server 2005中的值.好吧,XPath肯定允许使用name(),但SQL不支持.这是我在SQL中使用XML的主要抱怨;你必须弄清楚XML / Xpath / XQuery规范的哪些部分. 我能想到的唯一方法是构建一个CLR proc,它将XML加载到XML Document(iirc)中并运行XPath来提取节点的名称.我愿意接受这方面的建议. 解决方法DECLARE @xml as xml DECLARE @path as varchar(max) DECLARE @index int,@count int SET @xml = '<doc> <a>1</a> <b ba="1" bb="2" bc="3" /> <c bd="3"/> </doc>' SELECT @index = 1 SET @count = @xml.query('count(/doc/b/@*)').value('.','int') WHILE @index <= @count BEGIN SELECT @xml.value('local-name((/doc/b/@*[sql:variable("@index")])[1])','varchar(max)') SET @index = @index + 1 END 对于元素’b’ 它返回 > ba 您可以构建一个循环来获取xml中每个元素的属性. BTW应在关闭doc标签时关闭样本中的XML. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 无法在SQL Server 2012上运行的T-SQL CTE实现
- sqlserver数据库和MySQL数据库的连接的一个JUnit测试小记
- 项目实战——sqlserver 使用With as 提高sql语句的可维护性
- SqlServer 2005 简单的全文检索
- sqlserver 数据库 SQL循环语句
- 当您达到SQL Server Express 4GB/10GB限制时会发生什么?
- 为什么Linq To Sql数据绑定到gridview比传递SQL慢得多?
- Sqlserver2008以windows方式验证java数据库链接解决方案
- sqlserver 处理多行转到一列的方法
- sqlserver中的翻页