在SQL Server中创建XML时,如何在CDATA标记中包装值?

gan*_*elo 2 sql t-sql sql-server sql-server-2008

如何在CDATA中包装OldValue?

SELECT
1 AS Tag,
0 AS Parent,
(
    SELECT PositionDescription AS 'data()'
     FROM dbo.Project where ID = 32
     FOR XML PATH('')
) AS 'PositionDescription!1!OldValue!CDATA'
FOR XML EXPLICIT, TYPE 
Run Code Online (Sandbox Code Playgroud)

Ric*_*iwi 5

只需删除TYPE关键字即可.并在子查询中使用原始字符串而不是XML

SELECT
1 AS Tag,
0 AS Parent,
(
    SELECT PositionDescription
      FROM dbo.Project where ID = 32
) AS [PositionDescription!1!OldValue!CDATA]
FOR XML EXPLICIT
Run Code Online (Sandbox Code Playgroud)

样品和输出

create table Project (PositionDescription varchar(100), id int)
insert project select 'abc<test>', 32
---

<PositionDescription>
  <OldValue><![CDATA[abc<test>]]></OldValue>
</PositionDescription>
Run Code Online (Sandbox Code Playgroud)