xml路径返回"&lt;" for <和"&gt;" for>执行查询时.如何获得原始价值?

shu*_*una 4 sql sql-server stored-procedures qsqlquery

我有一个查询,根据条件产生一些文本.但是不要担心所有条件,我只是在'md.OtherMedication ='OTHERMEDICATION'及其评论显示时才会遇到问题.

因此,如果评论有价值,<shubham> 那么它就会返回

 &lt;shubham&gt;
Run Code Online (Sandbox Code Playgroud)

这不是预期的结果.以下是我正在使用的查询.

Select '' + CASE WHEN md.OtherMedication = 'OTHERMEDICATION' THEN md.Comment ELSE '' END
        FROM Medication md
        WHERE md.HraDiagnosisId = 94121 FOR XML PATH(N'')
Run Code Online (Sandbox Code Playgroud)

我期待<shubham>结果.

Sha*_*rza 6

尝试使用value()方法(xml数据类型)将XML转换为Varchar

select (Select '' + CASE WHEN md.OtherMedication = 'OTHERMEDICATION' 
                    THEN md.Comment ELSE '' END
        FROM Medication md
        WHERE md.HraDiagnosisId = 94121 FOR XML PATH(N''),TYPE).value('.','varchar(max)')
Run Code Online (Sandbox Code Playgroud)

以上将删除所有类型的XML标签,并将为您提供纯文本.


Ted*_* G. 2

&lt;是xml 的&gt;less than标签。greater than您可以在查询中替换它们:

Select '' + CASE WHEN md.OtherMedication = 'OTHERMEDICATION' 
THEN Replace(Replace(md.Comment, '&lt;', '<'), '&gt;', '>') ELSE '' END
FROM Medication md
WHERE md.HraDiagnosisId = 94121 FOR XML PATH(N'')
Run Code Online (Sandbox Code Playgroud)