2015-05-05 4 views
-3

Im ищет, чтобы найти шаблон для регулярного выражения, которые начинаются с 3-х букв и иметь 10 номеров, после использования его с REGEXP_LIKE в оракул например, для строки: ABC1236547890 мне нужно найти нужный шаблонRegular Expression с оракулом

+3

Это: '\ w {3} \ d {10}' – MT0

+0

", начинающийся с", поэтому '^ необходимо в начале регулярного выражения. – BbIKTOP

+0

Это не очень правильно, потому что я хочу только 3 буквы в начале не более и только 10 цифр в конце Пример: BVF125478965 верен, а BGHT125478966558 неверен –

ответ

1

начать с 3-х букв и 10 цифр после

Вы можете использовать REGEXP_LIKE:

  • ^ - Отмечает начало
  • [[:alpha:]] - алфавит класса
  • [[:digit:]] - Digit класс
  • {3} - Определяет количество символов
  • $ - Отмечает конец

Например,

SQL> WITH DATA AS(
    2 SELECT 'ABC1234567890' STR FROM DUAL UNION ALL 
    3 SELECT 'AB1234567890123' STR FROM DUAL UNION ALL 
    4 SELECT 'ABCD123456789' STR FROM DUAL 
    5 ) 
    6 SELECT * FROM DATA 
    7 WHERE REGEXP_LIKE(STR, '^[[:alpha:]]{3}[[:digit:]]{10}$'); 

STR 
--------------- 
ABC1234567890 

SQL> 
+0

Большое спасибо juste еще одна вещь ... могу ли я использовать select с REGEXP_LIKE, потому что выражение regulare находится в другой таблице –

+0

' SELECT * FROM WHERE REGEXP_LIKE (, '^ [[: alpha:]] {3} [[: digit:]] {10} $'); ' –

0
select * from 
(select 'abc1234567890' f 
from dual) 
where 
regexp_like(f, '^[a-zA-Z]{3}[0-9]{10}') 
0

См Regular Expression Metacharacters in Oracle Database или Perl-influenced Extensions in Oracle Regular Expressions

^[A-Za-z]{3}[0-9]{10} 

или

^[[:alpha:]]{3}[[:digit:]]{10} 

или

^[A-Za-z]{3}\d{10} 

или

^\w{3}\d{10} 

(последний из них будет также соответствовать номера в первых 3-х символов).

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

+0

спасибо, очень многое другое ... могу ли я использовать select с REGEXP_LIKE потому что мое выражение regulare находится в другой таблице –

+1

Последнее регулярное выражение неверно; он не только будет соответствовать номерам в дополнение к буквам, но также соответствует символам подчеркивания. –

+0

@AbderrahmaneHassani, если вы спрашиваете, можете ли вы использовать значение в столбце с 'REGEXP_LIKE()', ответ да, например. 'SELECT a. * FROM INNER JOIN b ON REGEXP_LIKE (a.col1, b.col2);' –