T / SQL:存储为nvarchar(max)的XML格式的XML格式结果

时间:2014-01-21 16:56:04

标签: sql-server xml tsql nlog

我不知道为什么,但我们的nLog配置现在存储为表中的nvarchar(max)列。使用列上的标准SELECT,我得到如下输出:

<variable name="HeaderLayout".... 

我尝试过使用“FOR XML AUTO”,以及一系列REPLACE函数来从这一列中获得漂亮,漂亮的XML输出。选项A不会自动将替换标记转换为<或者>,选项B真的很笨拙。有人可以推荐一个好的为什么要将配置检索为格式化的XML吗?

作为奖励,我希望能够采用格式化的XML,进行更改,然后以最少的努力进行INSERT,但是现在,我只是满足于能够使SELECT结果更多可读的。

谢谢!

2 个答案:

答案 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。您能提供一个查询示例吗?