如何在T-SQL中的XML字符串属性中转义双引号?

8 浏览
0 Comments

如何在T-SQL中的XML字符串属性中转义双引号?

非常简单的问题 - 我想在一个属性中使用双引号。怎么转义它们?我已经尝试过:

  • \\\"
  • \"\"
  • \\\\\"

并且我把@xml变量设置为xml类型和varchar(max)类型。

 declare @xml xml --(or varchar(max) tried both)
 set @xml = ''
 declare @xh int
 exec sp_xml_preparedocument @xh OUTPUT, @xml
 insert into @commits --I declare the table, just removed it for brevity
 select
    x.*
 from openxml(@xh,'/transaction/item')
  WITH (
    dataItemId int,
     dataItemType int,
    instanceId int,
    dataSetId int,
    value varchar(max)
  ) x

admin 更改状态以发布 2023年5月21日
0
0 Comments

tSql使用双引号来转义双引号。所以如果你想让它成为你的sql字符串字面量的一部分,你需要这样做:

declare @xml xml 
set @xml = ""

如果你想在xml值内包含引号,你可以使用实体,它看起来像这样:

declare @xml xml
set @xml = ""

0
0 Comments

这不是在XML中应该使用"吗? 例如:

"hi "mom" lol" 

**编辑:**测试通过;可以正常工作:

declare @xml xml
 set @xml = ''
select @xml.value('(//item/@value)[1]','varchar(50)')

0