2009-01-21 8 views
0

J'ai une colonne XML dans ma table qui contient cet extrait de xsd:SQL Server ne sera pas effectuer la validation régulière d'expression sur la colonne XML

<xsd:element name="Postcode" minOccurs="0"> 
    <xsd:simpleType> 
     <xsd:restriction base="xsd:string"> 
      <xsd:pattern value="^[0-9]{4}$" /> 
     </xsd:restriction> 
    </xsd:simpleType> 
</xsd:element> 

L'expression régulière devrait exiger une chaîne contenant 4 chiffres numériques. Il valide parfaitement dans Visual Studio et est une expression régulière correcte. Par contre, SQL Server ne l'acceptera pas. Par contre, SQL Server ne l'acceptera pas. Le message d'erreur que je reçois est:

XML Validation: Invalid simple type value: '1234'. Location:/* : Donor[1]/*:Postcode[1]. 

Je possède une adresse e-mail regex fonctionne bien, mais ne peut pas obtenir ce simple regex numérique pour travailler.

Répondre

1

ressemble votre source XML comme ceci:

<Postcode>1234</Postcode> 

ou comme ceci:

<Postcode> 
    1234 
</Postcode> 

Puisque vous taillez la chaîne (avec ^ et $) assurez-vous que votre XML ressemble à la ancien et pas le dernier.

0

Non, il n'y a pas d'espace autour de la chaîne.

J'ai une adresse e-mail regex qui fonctionne parfaitement.

1

La syntaxe de schéma XML XML ne prend pas en charge les ancres de début et de fin; tous les matchs sont ancrés aux deux extrémités, toujours. C'est probablement en essayant de faire correspondre "^" et "$" littéralement.

+0

Oui - J'ai déjà rencontré ça. Supprimer le^et $ a permis au match de fonctionner. –

Questions connexes