トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-94 文字列中の指定文字の数を取得

SQLパズル

テーブル
調査対象               指定文字
---------------------  --------
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

こちらを参考にさせていただきました


SQL

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を戻した場合に対処してます