You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft SQL中提取XML内ResponseDescription的纯文本值?

提取XML中转义子节点的纯文本值

你的查询返回带标签的内容,核心原因是<detail>节点里的内容是转义后的XML字符串(用&lt;/&gt;转义了标签),并非原生XML节点。要拿到纯文本,需要分两步处理转义内容:

修改后的查询语句:

WITH XMLNAMESPACES('http://google.com/' AS soap, 'http://stackoverflow.com/' AS ns2)
SELECT
    timeSent, 
    accountNo,
    isSuccessful,
    -- 1. 提取detail里的转义XML字符串并转换为XML对象
    TRY_CONVERT(xml, TRY_CONVERT(xml, responsePayload).value('/soap:Envelope/soap:Body/ns2:response/detail[1]', 'nvarchar(max)'))
    -- 2. 从还原后的XML中提取ResponseDescription的纯文本
    .value('(/LoanProcessResponse/ResponseDescription)[1]', 'nvarchar(max)') AS response
from my_table
where accountNo = '000000008'
ORDER BY timesent desc;

关键说明:

  • 替换.query()为.value():.query()返回XML片段,.value()直接返回标量文本值,满足你获取纯文本的需求。
  • 处理转义XML:先通过外层XML的.value()提取<detail>内的转义字符串,再用TRY_CONVERT(xml, ...)将其还原为可解析的XML对象,最后从该对象中提取目标文本。

内容的提问来源于stack exchange,提问作者Ibuqun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:20:17