将xml var转换为列

时间:2015-03-18 20:23:46

标签: sql-server xml

我通过将xml列值分配给xml变量来粉碎XML,然后执行以下操作:

select s.property.value('@name[1]', 'varchar(100)') as name1
       ,s.property.value('@value[1]', 'varchar(100)') as value1

from @s1.nodes('//properties/property') as s(property)

其中@ s1是变量。

如何直接对表中的XML列使用此语法(2008 R2)?

1 个答案:

答案 0 :(得分:0)

您需要交叉申请,然后选择值:

create table #xmltable (
            x xml
        )

insert #xmltable (x) values ('<xml><properties><property name="name1" value="value1" /><property name="name2" value="value2" /></properties></xml>')


select  p.value('@name', 'varchar(100)') as name,
        p.value('@value', 'varchar(100)') as value
    from #xmltable xt
    cross apply xt.x.nodes('//properties/property') t(p)


drop table #xmltable