Sie können eine Case-Anweisung und Kombinationen von substr verwenden und REGEXP_LIKE, so etwas wie:
with sample_data as (select '25006070TR' str from dual union all
select '250060708R' str from dual union all
select '25006070#R' str from dual union all
select '25006070 R' str from dual union all
select '12345' str from dual)
select str,
case when regexp_like(substr(str, 9, 1), '\d') then 'Digit'
when regexp_like(substr(str, 9, 1), '[[:alpha:]]') then 'Letter'
when substr(str, 9, 1) is null then 'Empty'
else 'Special character'
end ninth_char_type
from sample_data;
STR NINTH_CHAR_TYPE
---------- -----------------
25006070TR Letter
250060708R Digit
25006070#R Special character
25006070 R Special character
12345 Empty
Selbstverständlich, wenn Sie diese direkt in PL/SQL tun, können Sie einbetten nur die Case-Anweisung direkt in das PL/SQL; Sie müssten nicht zu SQL wechseln.
Wenn Sie die Zeichenfolge aus einer Tabelle abrufen, sollten Sie den Fallausdruck in einer SQL-Anweisung beibehalten.