我在[MyTable].Column1
中存储了以下XML数据,这是XML
类型列。
我想向其插入一个新元素:
我正在使用以下SQL,它成功执行但是当我再次查询相同的列值时,我没有看到我的新XML元素。我是否会错过插入带属性的元素的某些语法?
UPDATE [MyTable]
SET Column1.modify('insert <Setting Name="H" Value="0"/> as last into (/SettingValues)[1]')
WHERE ID = 'xxxxx'
答案 0 :(得分:3)
首先 - 为您的下一个问题:请不要发布图片!尝试设置测试场景。请阅读How to ask a good SQL question和How to create a MCVE。
关于您的问题
您的代码 - 一见钟情 - 应该有效。但是你明显修改它以适应这个论坛。
DECLARE @myTable TABLE(ID VARCHAR(100),Column1 XML)
INSERT INTO @myTable VALUES
('111'
,'<SettingValues>
<Setting Name="A-name" Value="A-value"/>
</SettingValues>')
, ('222'
,'<SettingValues>
<Setting Name="A-name" Value="A-value"/>
</SettingValues>');
UPDATE @MyTable
SET Column1.modify('insert <Setting Name="H" Value="0"/> as last into (/SettingValues)[1]')
WHERE ID = '222';
SELECT *
FROM @myTable
这可以按预期工作。
ID Column1
111 <SettingValues><Setting Name="A-name" Value="A-value" /></SettingValues>
222 <SettingValues><Setting Name="A-name" Value="A-value" /><Setting Name="H" Value="0" /></SettingValues>
执行后,您会看到“1行受影响”。
一些想法:
但是:上面的代码应该有用......