从 xml 节点获取值,无需在 SQL 服务器中进行 html 解码

Get value from xml node without html decoding in SQL Server

DECLARE @P1 xml
SET @P1='<Root><Data>&lt;script&gt;function abc(){}&lt;script&gt;</Data></Root>'
SELECT @P1

SELECT @P1.value('(/Root/Data)[1]', 'varchar(max)') 

以上代码给出的值为

<script>function abc(){}<script>

即 html decoded.But 如何在没有 html 解码的情况下获取值。有什么方法可以获取节点元素内部的实际值吗?

无需替换实体引用即可使用查询方法获取元素值,然后将XML文本节点转换为varchar:

SELECT CAST(@P1.query('(/Root/Data)[1]/text()') AS varchar(MAX));