我不知道为什么,但我们的nLog配置现在存储为表中的nvarchar(max)列。使用列上的标准SELECT,我得到如下输出:
<variable name="HeaderLayout"....
我尝试过使用“FOR XML AUTO”,以及一系列REPLACE函数来从这一列中获得漂亮,漂亮的XML输出。选项A不会自动将替换标记转换为&lt;或者&gt;,选项B真的很笨拙。有人可以推荐一个好的为什么要将配置检索为格式化的XML吗?
作为奖励,我希望能够采用格式化的XML,进行更改,然后以最少的努力进行INSERT,但是现在,我只是满足于能够使SELECT结果更多可读的。
谢谢!
答案 0 :(得分:1)
首先将值转换为XML。这将创建一个XML,将整个XML作为单个值。 然后使用value函数从XML获取该值,最后将获取的值转换回XML。
以下是一些使用您可以测试的表变量的代码。
declare @T table
(
Col nvarchar(max)
)
insert into @T(Col)
values('<root><item ID="1">textvalue</item></root>')
select cast(cast(T.Col as xml).value('.', 'nvarchar(max)') as xml) as XMLCol
from @T as T
结果:
XMLCol
-------------------------------------------
<root><item ID="1">textvalue</item></root>
答案 1 :(得分:0)
试试FOR XML AUTO, TYPE
。您能提供一个查询示例吗?