2016-06-21 14 views
1

文字列の9番目の文字が文字か数字かを確認するにはどうすればよいでしょうか。Oracleの文字列内の特定の箇所を確認する方法

たとえば、「25006070TR」では、「はい」またはそれに類似するものを文字として返したいとします。一方、「250060708R」では「いいえ」とか数字を言って欲しい。

答えて

1

あなたは、のようなものSUBSTRとREGEXP_LIKEのcase文との組み合わせを使用することができます:あなたはPL/SQLで直接これをやっている場合

明らか
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    

を、あなただけに直接case文を埋め込むことができますPL/SQL; SQLに切り替える必要はありません。

テーブルから文字列をフェッチする場合は、SQL文でケース式を保持する必要があります。

関連する問題