我通过将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)?
答案 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