Where子句中的数字通配符

时间:2012-02-23 19:33:31

标签: sql regex database oracle

我正在尝试向查询添加数字通配符以查找特定位置的数字。查询看起来像这样:

SELECT SUBMITTER
  FROM BASE_ELEMENT
 WHERE SUBMITTER LIKE 'm_%';

这个查询的问题在于它拾取以“m”开头并且在第二个位置有一个字符的所有内容。我需要像Unix通配符那样工作的东西:

'm[0-9]*'

我希望它包含m0,m1,m2等,但不包括ma,mb,mc等。

如何在Oracle 10g中完成此任务?

3 个答案:

答案 0 :(得分:9)

在10G中,您拥有wonder regular expressions。所以,您的查询可能是:

select submitter
  from base_element
 where regexp_like(submitter, '^m[[:digit:]]')

^将表达式锚定到行的开头,[[:digit:]]匹配任何数字。

答案 1 :(得分:2)

尝试使用REGEXP_LIKE函数(http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm)。

你的案子可以这样解决:

select submitter from base_element where regexp_like( submitter, '^m[0-9]' );

答案 2 :(得分:1)

您可以使用regexp_like

where regexp_like(submitter, '^m\d')