С помощью UNION ALL построить последовательность чисел от 1 до 5, чтобы получить все возможные 3-значные подстроки каждого числа:
select distinct n.number
from (
select 1 start union all select 2 union all select 3 union all
select 4 union all select 5
) s cross join numbers n
where n.number like concat(
'%', substring(n.number, s.start, 3),
'%', substring(n.number, s.start, 3), '%'
)
См. Демоверсию (я добавил больше строк).
С:
insert into numbers (number) values
('1234567890'),
('1234567123'),
('4567123123'),
('1231245675'),
('9599595995'),
('8438084380'),
('8959329599'),
('7778278236');
Результаты:
| number |
| ---------- |
| 1234567123 |
| 4567123123 |
| 9599595995 |
| 8438084380 |
| 8959329599 |
| 7778278236 |