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

Tom*_*ter 172 xml t-sql escaping

非常简单的问题 - 我有一个属性,我想要双引号.我如何逃避它们?我试过了

  • \"
  • ""
  • \\"

我已经为所有这些变量设置了xml类型和varchar(max)的@xml变量.

 declare @xml xml --(or varchar(max) tried both)

 set @xml = '<transaction><item value="hi "mom" lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 273

那不是&quot;在xml中吗?即

"hi &quot;mom&quot; lol" 
Run Code Online (Sandbox Code Playgroud)

**编辑:**测试; 工作良好:

declare @xml xml

 set @xml = '<transaction><item value="hi &quot;mom&quot; lol" 
    ItemId="106"  ItemType="2"  instanceId="215923801"  dataSetId="1" /></transaction>'

select @xml.value('(//item/@value)[1]','varchar(50)')
Run Code Online (Sandbox Code Playgroud)