我不知道这是否可行,但是我想从SQL的表中检索一些字段以及表中XML字段内的特定值,例如

MyTable(UserName varchar(50),XML_Response XML)


注意:C#中字段XML_Response中的值的数据类型为XElement

下面的XML内部字段XML_Response可以采用两种形式:标签更新结果说明中没有值:

<IntegrationResults>
  <UpdateResult>Failure</UpdateResult>
  <UpdateResultDescription>LeadId 2876474 not found</UpdateResultDescription>
</IntegrationResults>
<IntegrationResults>
    <UpdateResult>Success</UpdateResult>
    <UpdateResultDescription />
</IntegrationResults>


我的查询输出我想像这样(以2行为例)

"My User Name","LeadId 83608 not found"
"My User Name 2",""


先感谢您

最佳答案

作为您尝试的替代方法,可以使用C#命令对象并直接在表上运行以下SQL:

SELECT UserName
      , IntegrationResults.n.value('UpdateResultDescription[1]','VARCHAR(200)') as UpdateResultDescription
  FROM  MyTable
        outer apply MyTable.XML_Response.nodes('/IntegrationResults') AS IntegrationResults(n);

10-02 23:53