テーブル 調査対象 指定文字 --------------------- -------- ORACLE DEVELOPER 2006 R RRRRR R abcde R あaあaあ あ あaうaお あ あいあいあ あ あいうえお あ いaaaい あ いいいいい あ 調査対象の文字列に、 指定文字が何個存在するかを取得する 出力結果 調査対象 指定文字 文字数 --------------------- -------- ------ ORACLE DEVELOPER 2006 R 2 RRRRR R 5 abcde R 0 あaあaあ あ 3 あaうaお あ 1 あいあいあ あ 3 あいうえお あ 1 いaaaい あ 0 いいいいい あ 0
col 指定文字 for a8 select 調査対象,指定文字, Length(調査対象)-nvl(Length(Replace(調査対象,指定文字)),0) as 文字数 from (select 'abcde' as 調査対象,'R' as 指定文字 from dual union select 'ORACLE DEVELOPER 2006','R' from dual union select 'RRRRR','R' from dual union select 'あいうえお','あ' from dual union select 'あいあいあ','あ' from dual union select 'いいいいい','あ' from dual union select 'あaうaお','あ' from dual union select 'あaあaあ','あ' from dual union select 'いaaaい','あ' from dual);
nvl関数で、Replace関数がnullを戻した場合に対処してます