用户包含一个XML类型的字段“details”。
id为1024的用户的详细信息值格式如下:

<Details>
  <Name>Kevin</Name>
  <Age>23</Age>
</>Details>

我尝试在这个xml值中插入一个新的节点“address”,如下所示:
UPDATE Test.User
SET Details.modify('insert <Address>{0:c0}</Address> into (/Details)[1]')
WHERE Id = 1024

但发生错误,请帮忙指点。
“:”附近出现语法错误,应为'}'”

最佳答案

您需要使用CDATA section转义这些类型的标记字符。

DECLARE @DETAILS XML ='<Details>
  <Name>Kevin</Name>
  <Age>23</Age>
</Details>'

SELECT @DETAILS


SET @DETAILS.modify('insert <Address><![CDATA[{0:c0}]]></Address>   into (/Details)[1]')

SELECT @DETAILS

结果会是
<Details>
  <Name>Kevin</Name>
  <Age>23</Age>
  <Address>{0:c0}</Address>
</Details>

关于sql - SQL Server XQuery.modify“靠近':'的语法错误,预期为'}'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42108713/

10-12 17:25