Подхватывая идею @ RThomas здесь (upvoted!): Наличие таблицы, содержащей все последовательности, которые вы хотите обнаружить, и запись внутреннего соединения в таблицу, которую вы хотите проверить.Может быть, вам пригодятся следующие фрагменты кода (протестировано с Oracle 12c).
Таблица, которая будет содержать все соответствующие шаблоны.
drop table patterns ;
create table patterns (
pattern number primary key
);
Анонимный блок (выполняется один раз)
-- find patterns in the 2 constants (ascending/descending)
-- and insert them into the patterns table
declare
ascpattern constant char( 9 ) := '123456789' ;
descpattern constant char( 9 ) := '987654321' ;
begin
for length in 2 .. 9
loop
for offset in 1 .. 8
loop
if length + offset <= 10 then
-- dbms_output.put_line ( substr( ascpattern, offset, length ) ) ;
-- dbms_output.put_line ( substr( descpattern, offset, length ) ) ;
insert into patterns ( pattern )
values ( to_number( substr( ascpattern, offset, length ) ) ) ;
insert into patterns ( pattern )
values ( to_number( substr( descpattern, offset, length ) ) ) ;
end if ;
end loop ;
end loop ;
end ;
/
Таблица шаблонов
select * from patterns ;
PATTERN
----------
12 -- contained in ascpattern
21 -- contained in descpattern
23
32
34
...
9876543
12345678 -- contained in ascpattern
23456789 -- contained in ascpattern
87654321 -- contained in descpattern
98765432 -- contained in descpattern
123456789 -- contained in ascpattern
987654321
72 rows selected.
Тестирование: таблица, содержащая 100000 случайных чисел.
drop table randomnumbers ;
create table randomnumbers
as
select trunc( dbms_random.value ( 0, 999999 ) ) randomnumber
from dual
connect by level <= 100000 ;
select * from randomnumbers fetch first 6 rows only ;
RANDOMNUMBER
------------
529903
653752
339231
42871
599376
381709
Обнаружение шаблонов в таблице случайных чисел с помощью внутреннего соединения.(Конечно, ваш набор результатов будет выглядеть иначе.)
select
pattern
, randomnumber
from patterns P
join randomnumbers R on P.pattern = R.randomnumber
order by pattern ;
PATTERN RANDOMNUMBER
---------- ------------
76 76
87 87
456 456
3456 3456
54321 54321
56789 56789