Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Die Suche nach 0x0B

Endlich gefunden !

Der .NET-XML-Serialisierer hat das ungültige Zeichen bei der Serialisierung mit Escapezeichen versehen, dann aber vorher das Escapezeichen aufgehoben Deserialisierung.

Also musste ich nach den Entflohenen suchen , um das nicht maskierte 0x0B zu finden ... wirklich nicht lustig, Leute!

Also das:

  SELECT * from Mytable where Column like '%' + '&#xB' + '%'

Wird das tatsächlich finden:

<?xml version="1.0"?>
      <Hashtable><key>313_other_10</key><value>&#xB</value></Hashtable>

Und obwohl dies wie gültiges XML aussieht, wird es eine ungültige Zeichenausnahme auslösen, wenn :

    XmlSerializer xs = new XmlSerializer(Type.GetType(Hashtable));
    StringReader stringReader = new StringReader(xml);
    obj = xs.Deserialize(stringReader);

Vielen Dank an die Leute, die eingesprungen sind, um zu helfen! Es war eine unschätzbare Hilfe!