我想要一个 SQL 模式表达式来匹配1到999之间的所有数字。
编辑:
在 MSSQL 中。
当在 SQL 中对字符类使用 LIKE 运算符模式匹配时,不会像在正则表达式中那样重复字符类的通配符。换句话说,你不能做类似[0-9]+
or[0-9]{1,3}
的事情(这两个也会捕获0
)
因此,您必须先对数字进行零填充,然后才能进行比较。
它不是直接的模式,但这个表达式部分依赖于 LIKE 运算符,适用于 1 到 999 之间的正整数:
RIGHT('00' + myfield, 3) LIKE '[0-9][0-9][0-9]'
AND RIGHT('00' + myfield, 3) <> '000'
AND LEN(myfield) <= 3
编辑:假设您在谈论 Microsoft SQL Server,因为您没有指定。
SELECT * FROM table WHERE field BETWEEN 1 AND 999;
编辑: 这仅适用于 PostgreSQL。
如果您正在寻找一个正则表达式模式来匹配字符串,那么就像这样:
SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}';
查看有关正则表达式模式的文档。
SQL Server 不按原样支持正则表达式。
您可以使用以下解决方法或此问题:SQL Server 服务器中的正则表达式?.