2016-11-28 5 views
0

SQLテーブルにデータの列があり、最初のパスの後に 'BVH'と 'BVG'で始まるデータのみが含まれています。私は、この後に3文字の数字があり、それ以上の文字を持たないデータだけを含んでいます。文字が最初の3文字以下の第一、第二又は第三(または複数)の位置に落ちるしようとしている場合、私は知らないと私はexpersionの最後の半分を文字のみに一致させるSQL ORACLE

OUC not like 'BVG%[a-z]%' and OUC not like 'BVH%[a-z]%' 

を試してみました。私はまた、あなたが何を必要とするということです

例データ

BVH122 
    BVH174 
    BVH336 
    BVH123 
    BVH447 
    BVH447 
    BVH321 
    BVH573 
    BVG1NS 
    BVG1T2 
    BVH283 
    BVH172 
    BVG12T 
    BVG1T2 

答えて

0

を出現しようとしている何の文字を正確に知ることができませんか?

with dat as (select 'BVH122' a from dual 
    union all select 'BVH174' a from dual 
    union all select 'BVG1NS' a from dual 
    union all select 'BVH172' a from dual 
    union all select 'BVG12T' a from dual 
) 
select * from dat where regexp_like(a,'[A-Z]{3}[0-9]{3}'); 

だからあなたのクエリは次のとおりです。まさにそれだ

select * from table where regexp_like(OUC,'BV[GH]{1}[0-9]{3}'); 
+0

!私はいくつかの検索をしましたが、SQLのフィルタのような正規表現を使用することができないことを認識していませんでした。 –

関連する問題