我希望SQL模式表达式匹配 1 和 999 之间的所有数字。
修改
在MSSQL中。
答案 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?。