Sql server 在SQL Server中使用temp变量更新XML节点的内部文本值

Sql server 在SQL Server中使用temp变量更新XML节点的内部文本值,sql-server,xml,tsql,Sql Server,Xml,Tsql,您需要先选择元素,然后使用sql:variable…:从变量中绑定值: <metadata> <layout>8</layout> <maxScore>7</maxScore> </metadata> DECLARE @MaxReplace as NVARCHAR(10) SET @MaxReplace='1' Update dbo.SCORETBALE SET [XML].modify('replace

您需要先选择元素,然后使用sql:variable…:从变量中绑定值:

<metadata>
  <layout>8</layout>
  <maxScore>7</maxScore>
</metadata>
DECLARE @MaxReplace as NVARCHAR(10)
SET @MaxReplace='1'     
Update dbo.SCORETBALE
SET [XML].modify('replace value of (/ns:metadata/ns:maxScore)[1] with "@MaxReplace "')
  FROM  dbo.XYZ...(condition)... 
CREATE TABLE #SCORETBALE(col XML);

INSERT INTO #SCORETBALE(coL)
VALUES ('<metadata>
  <layout>8</layout>
  <maxScore>1</maxScore>
  </metadata>');

DECLARE @MaxReplace AS NVARCHAR(10) = '22';

UPDATE #SCORETBALE
SET col.modify('replace value of (/metadata/maxScore/text())[1] 
                with sql:variable("@MaxReplace")')
-- WHERE ...

SELECT *
FROM #SCORETBALE;