将列值插入XML列

时间:2017-01-23 11:44:36

标签: sql sql-server xml insert sql-update

我有一张名为[catcot]的桌子,上面有一个名字'列和' xml'列。

'名称'是varchar和' xml'是XML类型

目前' xml'列包含

<Cat>
  <Temp>.html</Temp>
</Cat>

我需要在列&#39; name&#39;中插入值。就在&#39; .html&#39;

之前

这可能吗?我尝试过一般更新,但似乎并不接受XML内容。

以下是我尝试的更新:

UPDATE [db].[catcot]
SET xml = '<Cat><Temp>' + name + '.html</Temp></Cat>'
WHERE id = 24

导致了

XML parsing: line 1, character 67, illegal name character

1 个答案:

答案 0 :(得分:0)

尝试使用可更新的CTE:

DECLARE @catcot TABLE(name VARCHAR(100),TheXml XML);
INSERT INTO @catcot VALUES
 ('test1','<Cat><Temp>.html</Temp></Cat>')
,('test2','<Cat><Temp>.html</Temp></Cat>');

WITH updateableCTE AS
(
    SELECT TheXml
          ,(SELECT name AS Temp FOR XML PATH('Cat')) AS NewXml
    FROM @catcot
)
UPDATE updateableCTE SET TheXml=NewXml;

SELECT * FROM @catcot;

重要!

你应该从不通过字符串连接来创建XML!

相关问题