2012-02-23 51 views
1

我試圖將數字通配符添加到查詢以查找特定位置中的數字。查詢看起來是這樣的:號碼通配符在哪裏條款

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

與此查詢的問題是,它拿起,與「M」開頭,並且在第二位置的字符一切。我需要工作,像Unix通配符的東西:

'm[0-9]*' 

我希望它包括M0,M1,M2等,但不包括MA,MB,MC等

我怎麼會在完成這Oracle 10g?

回答

9

在10G你有regular expressionswonder。所以,您的查詢可能是:

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

^錨表達對線的起點和[[:digit:]]匹配任何數字。

+0

感謝您的參考。我不知道「regexp_like」的功能。這解決了我的問題。 – jmq 2012-02-23 19:46:09

+0

沒問題@jmquigley;我唯一的建議是不要依賴正則表達式,如果你能避免它。他們可以非常容易地大規模地過度複雜,儘管他們對於這樣的情況是完美的。 – Ben 2012-02-23 20:26:02

1

你可以使用regexp_like

where regexp_like(submitter, '^m\d') 
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]');