如何从SQL Server中的XML列检索数据

时间:2014-03-08 16:47:22

标签: sql sql-server xml

这里的第一次海报。

我已经非常努力地找到解决问题的方法,无论是凭借自己的智慧还是其他资源,但这一切都无济于事。

所以,我有一个临时表结构:

CREATE TABLE #ErrorTable
(
    SessionId VARCHAR(100),
    errorXml XML
)

可以假设另一个查询将成功插入具有多个条目的会话ID和XML,其结构类似于:

<Message>
  <Header>
    <To>test</To>
    <From>test</From>
    <MessageID>k3lkjasd</MessageID>
    <RelatesToMessageID>6hu</RelatesToMessageID>
    <SentTime>2014-02-28T15:09:29.2921688-05:00</SentTime>
  </Header>
  <Body>
    <Error>
      <Code>600</Code>
      <DescriptionCode>14</DescriptionCode>
      <Description>Invalid Login Id</Description>
    </Error>
  </Body>
</Message>

我的问题是尝试从Error节点中检索所有Description值。我尝试了以下查询:

SELECT n.l.value('DescriptionCode[1]','VARCHAR(100)') AS ErrorDescription
FROM #ErrorTable
CROSS APPLY errorXml.nodes('/Message/Body/Error') n(l)

SELECT errorXml.value(N'(/Message/Body/Error/DescriptionCode/node())[1]', 'VARCHAR(100)') AS ErrorDescription FROM #ErrorTable

这些查询都不起作用。

非常感谢任何信息或帮助!

1 个答案:

答案 0 :(得分:0)

这有效吗?:


SELECT errorXml.value('(/Message/Body/Error/Description)[1]', 'varchar(max)') FROM #ErrorTable