2016-06-21 2 views

Antwort

1

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.

Verwandte Themen