如何在T-SQL中的XMLstring中的属性中使用双引号?

很简单的问题 – 我有一个属性,我想双引号英寸我怎么逃避他们? 我试过了

  • \”
  • “”
  • \\”

而且我已经为所有这些xmltypes和varchar(max)都创build了@xmlvariables。

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 

那不是&quot; 在xml中? 即

 "hi &quot;mom&quot; lol" 

**编辑:**testing; 工作正常:

 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)') 

tSql用另一个双引号转义双引号。 所以,如果你想它是你的SQLstring文字的一部分,你会这样做:

 declare @xml xml set @xml = "<transaction><item value=""hi"" /></transaction>" 

如果你想在xml中包含一个 ,你可以使用一个实体,如下所示:

 declare @xml xml set @xml = "<transaction><item value=""hi &quot;mom&quot; lol"" /></transaction>" 

不能评论,但投了票,想让人们知道&quot; regex=".*img src=&quot;(.*)&quot;.*"使用转义版本而不是双引号,因此在Solr中为RegexTransformer创buildregexexpression式时,xmlconfiguration文件可以很好地工作。

在Jelly.core中testing一个string可以使用:

 &lt;core:when test="${ name == 'ABC' }"&gt; 

但是,如果我要检查string“Toy's R Us”:

 &lt;core:when test="${ name == &amp;quot;Toy&apos;s R Us&amp;quot; }"&gt; 

就是这样,如果里面允许双引号:

 &lt;core:when test="${ name == "Toy's R Us" }"&gt;