带有HTML标记的SQL XML数据类型

时间:2016-03-24 21:52:36

标签: sql xml-parsing

我有一个包含两列的SQL表。一个是身份,另一个是大型XML文档(源自我导入到SQL的InfoPath文档)。我有select语句从不同的节点拉取数据。一些节点中包含HTML。当使用select语句获取节点值时,它会从中删除所有HTML并返回文本。这些是RTF字段。有谁知道如何让它返回以保持标记?

我的选择陈述:

WITH XMLNAMESPACES (
'http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-01-06T15:50:09' AS my
)

SELECT
id,
rec.value('(/my:myFields/my:RoutineCare/my:field2837)[1]', 'nvarchar(max)')  AS RoutNotes
FROM
tblXml
WHERE id = 14
GO

它返回的内容不包含您在下面看到的HTML,只包含该标记内的文本。

SQL表中的XML:

<my:field2837>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:space="preserve">
    <div>
        <font face="Times New Roman" size="1">
        <font face="Times New Roman" size="1">
        <p class="MsoNormal" style="margin:0in 0in 0pt"><span style="color:#1e3c7b"><font size="1" /></span></p>
        <p class="MsoNormal" style="margin:0in 0in 0pt"><font size="2"><span style="color:#1e3c7b"><font face="Arial">INN:  100%, deductible waived<br /></font></span></font></p>
        <p class="MsoNormal" style="margin:0in 0in 0pt"><font size="3"><font face="Arial"><font size="2" /></font></font> </p>
        <p class="MsoNormal" style="margin:0in 0in 0pt"><font size="3"><font face="Arial"><font size="2">This plan utilizes the Mandated Benefit list - See Health Care Reform - Preventive Care Coverage PPM for age limits and benefits.<br /><br /></font></font></font></p></font>
        </font>
        <p class="MsoNormal" style="margin:0in 0in 0pt"><span style="font-family:&amp;apos;color:red"><font size="3">This plan offers Expanded Women’s Health Services as outlined in UMR’s recommendation chart.  See “Health Care Reform – Women’s Expanded Preventive Health Provision” PPM for specifics and benefits</font></span></p>
        <p class="MsoNormal" style="margin:0in 0in 0pt"><span style="font-family:&amp;apos;color:red"><font size="3" /></span> </p><span style="font-family:&amp;apos;color:red">
        <p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt"><font color="#000000"><font face="Arial"><b><u><span style="background:lime;font-size:10pt">Routine Covered Services</span></u></b><span style="background:lime;font-size:10pt">:<span>  </span>apply In-Network benefits for services rendered by an Out-of-Network provider if services are not available from an In-Network provider within 50 miles from the covered member’s residence. U&amp;C applies</span></font></font></p></span><span style="font-family:&amp;apos;color:#1e3c7b;font-size:10pt" /></div>
    </html>
</my:field2837>

1 个答案:

答案 0 :(得分:0)

如果有人想知道,我想出来了:

CONVERT(nvarchar(max),t.rtf1.query('/ my:myFields / my:Ambulance / my:field2618 / child :: *'))AS AmbNotes

这     tblXml 交叉申请rec.nodes('/ my:myFields / my:Ambulance')AS t(rtf1) GO