Все ваши вопросы интересные головоломки sql.
Это решение также не включает регулярные выражения:
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
left(substring(n.number, s.start, 2), 1) <> right(substring(n.number, s.start, 2), 1)
and
n.number like concat(
'%', substring(n.number, s.start, 2),
substring(n.number, s.start, 2),
'%', substring(n.number, s.start, 2), '%'
)
См. Демоверсию .
Результаты:
| number |
| ---------- |
| 1212121205 |
| 1121212128 |