条件我有这样的SQL Server数据库的Process
表:获得属性XML子节点的值与在父节点
workflowXML列有值是这样的:
<Tasks>
<Task type="start" id="Task_038517r">
<TaskUsers>
<TaskUser RoleName="User"/>
</TaskUsers>
</Task>
<Task type="final" id="Task_1sytah6">
<TaskUsers>
<TaskUser RoleName="Admin"/>
</TaskUsers>
</Task>
</Tasks>
我需要sql查询得到RoleName
Task
节点type
的Task
是start
。 我测试这个查询:
select m.c.value('@RoleName','varchar(max)') as RoleName
from Process as p
outer apply
p.WorkflowXML.nodes('/Tasks/Task/TaskUsers/TaskUser') as m(c)
where
WorkflowXML.exist('/Tasks/Task[@type="start"]') = 1
但WorkflowXML.exist
是不正确的,并返回所有的RoleNames
在XML列。
如果有人能够解释这个问题的解决方案,这将是非常有益的。
谢谢。
简单而好看! :) – gofr1