2012-02-23 8 views
1

特定の位置の番号を検索するために、クエリに番号のワイルドカードを追加しようとしています。番号句のワイルドカード

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

このクエリでの問題は、それが「M」で始まり、第2の位置に文字を持っているすべてのものをピックアップしていることである:クエリは次のようになります。私はこれを実現する方法を

'm[0-9]*' 

私はそれはM0、M1、M2、などが挙げられるが、MAを除外し、MB、MCにしたい、など

:私はUnixのワイルドカードのように働くものが必要Oracle 10g?

答えて

9

あなたはregular expressionswonderを持っています。だから、あなたのクエリは次のようになります。

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

^アンカーラインの始点と任意の数字にマッチ[[:digit:]]に表現。

+0

感謝を。私は関数 "regexp_like"を知らなかった。それが私の問題を解決しました。 – jmq

+0

問題はありません@jmquigley;私の唯一のアドバイスは、あなたがそれを避けることができれば正規表現に依存しないことです。彼らはこのような状況に最適ですが、非常に簡単に大規模に複雑化することができます。 – Ben

1

あなたはregexp_likeを使用することができます:10Gで

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]');