2016-11-28 13 views
0

У меня есть столбец данных в таблице SQL, и после первого прохода он содержит только данные, начинающиеся с «BVH» и «BVG». Я хочу, чтобы он содержал только данные с тремя числовыми символами после этого и больше букв. Я попыталсяСопоставьте конечную половину экспонирования только с буквами SQL ORACLE

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

как я не знаю, если буквы будут падать в первой, второй или третьей (или нескольких) позиций после первых 3-х букв. Я также не могу точно знать, что буквы будут появляться

Пример данных

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, спасибо за помощь! –