我有一张名为[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
答案 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!