1
文字列の9番目の文字が文字か数字かを確認するにはどうすればよいでしょうか。Oracleの文字列内の特定の箇所を確認する方法
たとえば、「25006070TR」では、「はい」またはそれに類似するものを文字として返したいとします。一方、「250060708R」では「いいえ」とか数字を言って欲しい。
文字列の9番目の文字が文字か数字かを確認するにはどうすればよいでしょうか。Oracleの文字列内の特定の箇所を確認する方法
たとえば、「25006070TR」では、「はい」またはそれに類似するものを文字として返したいとします。一方、「250060708R」では「いいえ」とか数字を言って欲しい。
あなたは、のようなもの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文でケース式を保持する必要があります。