Dość proste pytanie - mam atrybut, w którym chciałbym mieć podwójne cudzysłowy. Jak przed nimi uciec? próbowałem
- \ "
- „”
- \\ ”
I utworzyłem zmienną @xml zarówno typu xml, jak i varchar (max) dla nich wszystkich.
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
Odpowiedzi:
Czy nie byłoby to
"
w formacie xml? to znaczy** edycja: ** testowane; działa w porządku:
źródło
tSql wymyka podwójny cudzysłów innym podwójnym cudzysłowem. Więc jeśli chcesz, aby był on częścią twojego literału ciągu sql, zrobiłbyś to:
Jeśli chcesz zawrzeć cytat wewnątrz wartości w samym xml, użyj encji, która wyglądałaby następująco:
źródło
Nie mogę już komentować, ale zagłosowałem na to i chciałem dać ludziom znać, że
"
działa bardzo dobrze dla plików konfiguracyjnych xml podczas tworzenia wyrażeń regex dla RegexTransformer w Solr, tak jak to:regex=".*img src="(.*)".*"
używając wersji ze znakami ucieczki zamiast podwójnych cudzysłowów.źródło
W Jelly.core do testowania dosłownego ciągu znaków należałoby użyć:
Ale jeśli muszę sprawdzić ciąg „Toy's R Us”:
Byłoby tak, gdyby dozwolone były podwójne cudzysłowy:
źródło