SQL Server不会对XML列执行正则表达式验证

时间:2009-01-21 21:55:52

标签: sql xml regex

我的表格中有一个XML列,其中包含此xsd片段:

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

正则表达式应该需要一个包含4位数字的字符串。它在Visual Studio中完美验证,是一个正确的正则表达式。

另一方面,SQL Server不会接受它。我收到的错误消息是:

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

我的电子邮件地址regex工作正常,但无法使这个简单的数字正则表达式工作。

3 个答案:

答案 0 :(得分:1)

您的源XML是这样的:

<Postcode>1234</Postcode>

或者像这样:

<Postcode>
    1234
</Postcode>

由于您正在修剪字符串(使用^$),请确保您的XML看起来像前者而不是后者。

答案 1 :(得分:1)

XML Schema正则表达式风格不支持开始和结束锚点;所有比赛都始终固定在两端。它可能试图在字面上匹配'^'和'$'。

答案 2 :(得分:0)

不,字符串周围没有空格。

我的电子邮件地址正则表达式完美无缺。