Możesz spróbować z czymś takim:
select level, substr('Stefano', level, 1) /* a substring starting from level-th character, 1 character log */
from dual
connect by level <= length('Stefano') /* the same number of rows than the length of the string */
Spowoduje to zbudowanie jednego wiersza dla każdego znaku ciągu początkowego, gdzie N-ty wiersz zawiera N-ty znak wyodrębniony przez substr
.