我在stackoverflow上看到了几个答案,但我找不到我要找的东西。我已经检查了this question和this one以及其他一些网页,但无法找到解决方案。
这是我的测试数据。实际上,此代码位于表中的XML列中。
<product id=152>
<name>tractor</name>
<category weight=5600 invoice="A600"/>
</product>
<product id=731>
<name>excavadora</name>
<category weight=12340 invoice="B300"/>
</product>
我需要的是更新以前的XML做两个动作:
我认为解决方案应该在查询中使用.modify和.value关键字,但不知道如何。
我正在使用SQL Server 2008 express。我已经看到一个查询可以帮助我得到一个答案,但我确实没有任何工作。
答案 0 :(得分:0)
以下是针对您的具体情况的示例。它将ID 152的重量替换为值54321。
DECLARE
@x xml,
@ProductID int,
@CategoryWeight int
SELECT @x = '
<Product ID="152">
<Category Weight="5600" Invoice="A600" />
</Product>
<Product ID="731">
<Category Weight="12340" Invoice="B300" />
</Product>'
SELECT
@ProductID = 152,
@CategoryWeight = 54321
SET @x.modify('
replace value of (
/Product[@ID=sql:variable("@ProductID")]/Category/@Weight
)[1]
with sql:variable("@CategoryWeight")
')
SELECT @x
请注意,如果需要,可以将sql:variable(“”)部分替换为实际值。熟悉这个例子,插入应该是一块蛋糕。祝你好运!