12

我想要一个 SQL 模式表达式来匹配1999之间的所有数字。

编辑:

在 MSSQL 中。

4

2 回答 2

16

当在 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,因为您没有指定。

于 2012-05-13T07:37:02.880 回答
4
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 服务器中的正则表达式?.

于 2012-05-13T07:38:32.903 回答