SQL Server XQuery.修改 "Syntax error near ' :', expected ' }'"

标签 sql sql-server database

表Test.User包含一个XML类型的“Details”字段。 Id为1024的用户的Details值的格式如下:

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

我尝试将新节点“Address”插入到此 xml 值中,如下所示:

UPDATE Test.User
SET Details.modify('insert <Address>{0:c0}</Address> into (/Details)[1]')
WHERE Id = 1024

但是出现错误,请帮忙指教。

"Syntax error near ':', expected '}'"

最佳答案

您需要使用 CDATA section 对这些类型的 {0:c0} 标记字符进行转义

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 Server XQuery.修改 "Syntax error near ' :', expected ' }'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108713/

相关文章:

sql-server - 将文本安全转换为 XML

java - MyBatis:使用动态查询比较字符串值

sql - 正则表达式甲骨文

Mysql:Concat内部的连接符号与条件语句

sql - 在列上执行数学的更优雅的方式

c# - 使用图像作为数据库表列

Oracle 数据库中的 REGEXP 挫败感

php - 更新数据库中的评论数

c# - 需要创建一个在目标列中插入数据的 SSIS 包

sql - 没有在触发器函数中选择表的权限