Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A busca por 0x0B


Finalmente encontrei!

O serializador .NET XML estava escapando do caractere inválido ao serializá-lo, mas então ele estava sem escape antes desserialização.

Então eu tive que procurar o escapado para encontrar o 0x0B que não escapou... sério, não é engraçado!

Então, é isso:
  SELECT * from Mytable where Column like '%' + '&#xB' + '%'

Na verdade, vai encontrar isso:
<?xml version="1.0"?>
      <Hashtable><key>313_other_10</key><value>&#xB</value></Hashtable>

E embora isso pareça um XML válido, ele lançará uma exceção de caractere inválido quando:
    XmlSerializer xs = new XmlSerializer(Type.GetType(Hashtable));
    StringReader stringReader = new StringReader(xml);
    obj = xs.Deserialize(stringReader);

Muito obrigado às pessoas que pularam para ajudar! Foi uma ajuda inestimável!