这里的第一次海报。
我已经非常努力地找到解决问题的方法,无论是凭借自己的智慧还是其他资源,但这一切都无济于事。
所以,我有一个临时表结构:
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
这些查询都不起作用。
非常感谢任何信息或帮助!
答案 0 :(得分:0)
这有效吗?:
SELECT errorXml.value('(/Message/Body/Error/Description)[1]', 'varchar(max)') FROM #ErrorTable