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

ARZ*_*ARZ 9 sql sql-server pattern-matching sql-server-2008-r2

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

编辑:

在MSSQL中.

ric*_*ent 14

在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
Run Code Online (Sandbox Code Playgroud)

编辑:假设您正在谈论Microsoft SQL Server,因为您没有指定.

  • @a_horse_with_no_name虽然不是SQL-92标准的严格组成部分,但MSSQL支持LIKE模式中的基本字符类,具有*非常长的时间,并且它与正则表达式本身无关.http://msdn.microsoft.com/en-us/library/ms179859(v=sql.90).aspx其他数据库,包括DB2,Informix和MySQL,都有自定义语言元素来支持更复杂的正则表达式,不使用LIKE运算符. (4认同)