Sql server 更新到XML列
正在尝试在SQL上更新customers表中销售经理的XML列 列的格式和名称如下:Sql server 更新到XML列,sql-server,xml,tsql,xquery,Sql Server,Xml,Tsql,Xquery,正在尝试在SQL上更新customers表中销售经理的XML列 列的格式和名称如下: <CustomColumnsCollection> <CustomColumn> <Name>ReceiveRebate</Name> <DataType>5</DataType> <Value>False</Value> </CustomColumn>
<CustomColumnsCollection>
<CustomColumn>
<Name>ReceiveRebate</Name>
<DataType>5</DataType>
<Value>False</Value>
</CustomColumn>
<CustomColumn>
<Name>Sales Manager</Name>
<DataType>0</DataType>
<Value>Ben Dover</Value>
</CustomColumn>
<CustomColumn>
<Name>SurveyDate</Name>
<DataType>1</DataType>
<Value />
</CustomColumn>
</CustomColumnsCollection>
它运行成功,但它似乎什么也没做,任何线索都会非常有用 以下是如何做到这一点
1 XPath表达式已关闭。XML中没有属性。是一个元素
2我添加了一个SQL变量,以便灵活地查找适当的XML片段
SQL
您正在使用哪个数据库?SQL Server 2014 12.0.4100.1
UPDATE Customers
SET CustomColumns.modify('replace value of
(/CustomColumnsCollection/CustomColumn[@Name=("Sales Manager ")]/Value/text())[1] with ("Gary Shaw")
')
WHERE CustomerID = 'aptcustomerid'
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, CustomColumns XML);
INSERT INTO @tbl ( CustomColumns) VALUES
(N'<CustomColumnsCollection>
<CustomColumn>
<Name>ReceiveRebate</Name>
<DataType>5</DataType>
<Value>False</Value>
</CustomColumn>
<CustomColumn>
<Name>Sales Manager</Name>
<DataType>0</DataType>
<Value>Ben Dover</Value>
</CustomColumn>
<CustomColumn>
<Name>SurveyDate</Name>
<DataType>1</DataType>
<Value />
</CustomColumn>
</CustomColumnsCollection>');
-- DDL and sample data population, end
-- before
SELECT * FROM @tbl;
DECLARE @nameElement VARCHAR(30) = 'Sales Manager';
UPDATE @tbl
SET CustomColumns.modify('replace value of
(/CustomColumnsCollection/CustomColumn[Name=sql:variable("@nameElement")]/Value/text())[1]
with ("Gary Shaw")
');
--WHERE CustomerID = 'aptcustomerid'
-- after
SELECT * FROM @tbl;