read query nodos node leer column campo attribute xml tsql escaping

query - ¿Cómo evito las comillas dobles en atributos en una cadena XML en T-SQL?



sql xml column get value (4)

Pregunta bastante simple: tengo un atributo en el que me gustaría tener comillas dobles. ¿Cómo puedo escapar de ellos? He intentado

  • / "
  • ""
  • // "

Y he hecho que la variable @xml sea de tipo xml y varchar (max) para todos ellos.

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


En Jelly.core para probar una cadena literal uno usaría:

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

Pero si tengo que verificar la cadena "Toy''s R Us":

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

Sería así, si se permitieran las comillas dobles dentro:

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


No sería eso &quot; en xml? es decir

"hi &quot;mom&quot; lol"

** editar: ** probado; funciona bien:

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


Ya no puedo comentar más, pero lo voté y quería que la gente supiera que &quot; funciona muy bien para los archivos de configuración xml al formar expresiones regex para RegexTransformer en Solr como lo siguiente: regex=".*img src=&quot;(.*)&quot;.*" utilizando la versión escapada en lugar de comillas dobles.


tSql escapa una comilla doble con otra comilla doble. Entonces, si quisieras que fuera parte de tu cadena literal sql harías esto:

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

Si desea incluir una cita dentro de un valor en el xml en sí, usa una entidad, que se vería así:

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