Sql server SQL Server xml查询可以';t返回预期结果
我的表中有这些xml数据,如您所见:Sql server SQL Server xml查询可以';t返回预期结果,sql-server,xml,Sql Server,Xml,我的表中有这些xml数据,如您所见: <ArrayOfFlowDetailParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <FlowDetailParameters> <DepartmentId>23</DepartmentId> <UserId xs
<ArrayOfFlowDetailParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FlowDetailParameters>
<DepartmentId>23</DepartmentId>
<UserId xsi:nil="true" />
<Username />
<FullName />
<ConfirmDateTime xsi:nil="true" />
<Comment />
<Status>Pending</Status>
<AttachmentId />
</FlowDetailParameters>
<FlowDetailParameters>
<DepartmentId>22</DepartmentId>
<UserId xsi:nil="true" />
<Username />
<FullName />
<ConfirmDateTime xsi:nil="true" />
<Comment />
<Status>Pending</Status>
<AttachmentId />
</FlowDetailParameters>
<FlowDetailParameters>
<DepartmentId>7</DepartmentId>
<UserId xsi:nil="true" />
<Username />
<FullName />
<ConfirmDateTime xsi:nil="true" />
<Comment />
<Status>Pending</Status>
<AttachmentId />
</FlowDetailParameters>
<FlowDetailParameters>
<DepartmentId>18</DepartmentId>
<UserId xsi:nil="true" />
<Username />
<FullName />
<ConfirmDateTime xsi:nil="true" />
<Comment />
<Status>Pending</Status>
<AttachmentId />
</FlowDetailParameters>
</ArrayOfFlowDetailParameters>
听起来像是在试图查询一个请求列表,其中FlowDetailParameter列的XML包含一个DepartmentId与@DepartmentId变量匹配的记录,对吗 查询中的[1]指定只检查每行的FlowDetailParameter XML中第一次出现的DepartmentId。除非XML中的第一个DepartmentId与您的参数匹配,否则将无法获得匹配 相反,您可以使用以下查询来查找所有具有FlowDetailParameter且与@departmentid变量匹配的请求
听起来像是在试图查询一个请求列表,其中FlowDetailParameter列的XML包含一个DepartmentId与@DepartmentId变量匹配的记录,对吗 查询中的[1]指定只检查每行的FlowDetailParameter XML中第一次出现的DepartmentId。除非XML中的第一个DepartmentId与您的参数匹配,否则将无法获得匹配 相反,您可以使用以下查询来查找所有具有FlowDetailParameter且与@departmentid变量匹配的请求
是的,这是答案,我同意@MaxThank you max it works。你能看看这个吗:是的,这是答案,我同意@MaxThank you max it works。你能看看这个吗:
declare @departmentId nvarchar(max)
set @departmentId=22
select Requests.* from Requests
where
and (FlowDetailParameter.value('(/ArrayOfFlowDetailParameters/FlowDetailParameters/DepartmentId/text())[1]','bigint') = @departmentId )
SELECT r.*
FROM @Requests r
WHERE EXISTS (SELECT *
FROM r.FlowDetailParameter.nodes('/ArrayOfFlowDetailParameters/FlowDetailParameters/DepartmentId') as Parms(DepartmentId)
WHERE DepartmentId.value('.', 'bigint') = @departmentid)