WITH t AS (SELECT 'SATOR AREPO TENET OPERA ROTAS' str FROM dual),
t1 AS (SELECT str, ROWNUM pos FROM t CONNECT BY LEVEL <= LENGTH(str)+1)
SELECT substr(t2.str, t2.pos, t3.pos - t2.pos) palindrome
FROM t1 t2, t1 t3
WHERE t3.pos > t2.pos + 1
AND substr(t2.str, t2.pos, t3.pos - t2.pos) = REVERSE(substr(t2.str, t2.pos, t3.pos - t2.pos))
ORDER by t3.pos - t2.pos DESC
PALINDROME | SATOR AREPO TENET OPERA ROTAS | ATOR AREPO TENET OPERA ROTA | TOR AREPO TENET OPERA ROT | OR AREPO TENET OPERA RO | R AREPO TENET OPERA R | AREPO TENET OPERA | AREPO TENET OPERA | REPO TENET OPER | EPO TENET OPE | PO TENET OP | O TENET O | TENET | TENET | ENE |
---|