MSSQL模式匹配[1-999]之间的所有数字

时间:2012-05-13 07:30:54

标签: sql sql-server sql-server-2008-r2 pattern-matching

我希望SQL模式表达式匹配 1 999 之间的所有数字。

修改

在MSSQL中。

2 个答案:

答案 0 :(得分:13)

在SQL中对字符类使用LIKE运算符模式匹配时,没有像正则表达式那样的字符类的通配符重复。换句话说,您不能执行[0-9]+[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,因为您没有指定。

答案 1 :(得分:4)

SELECT * FROM table WHERE field BETWEEN 1 AND 999;

编辑: 这只适用于PostgreSQL。

如果您正在寻找匹配字符串的正则表达式模式,那么就像这样:

SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}';

查看regexp patterns上的文档。

SQL Server不支持正则表达式 as-is 您可以使用以下workaround或此问题:Regular Expressions in SQL Server servers?