当前位置:  开发笔记 > Android > 正文

从SQL XML列中的元素获取属性的名称

如何解决《从SQLXML列中的元素获取属性的名称》经验,为你挑选了2个好方法。

对于此xml(在SQL 2005 XML列中):


 1
 
 

我希望能够检索属性(ba,bb,bc,bd)的名称,而不是SQL Server 2005中的值.好吧,XPath肯定允许使用name(),但SQL不支持.这是我在SQL中使用XML的主要抱怨; 你必须弄清楚XML/Xpath/XQuery规范的哪些部分.

我能想到的唯一方法是构建一个CLR proc,它将XML加载到XML Document(iirc)中并运行XPath来提取节点的名称.我愿意接受这方面的建议.



1> 小智..:
DECLARE @xml as xml

SET @xml = 
'
 1
 
 
'

SELECT DISTINCT
 CAST(Attribute.Name.query('local-name(.)') AS VARCHAR(100)) Attribute,
 Attribute.Name.value('.','VARCHAR(100)') Value
FROM @xml.nodes('//@*') Attribute(Name)

返回:

属性值

ba 1

bb 2

bc 3

bd 3



2> Ray Lu..:
DECLARE @xml as xml
DECLARE @path as varchar(max)
DECLARE @index int, @count int

SET @xml = 
'
 1
 
 
'



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

BB

公元前

您可以构建一个循环来获取xml中每个元素的属性.

BTW示例中的XML应在关闭doc标签时关闭.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有