トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
5-46 文字の出現回数を求める
SQLパズル
メモテーブル
No メモ1 メモ2 メモ3
-- ----- ----- -----
1 abcde fghij klmno
2 01234 56789 abcde
3 01234 56789 01234
メモテーブルから
メモ1、メモ2、メモ3の数字文字の出現回数の合計を求めて
出現回数の昇順に出力する。
出力結果
No メモ1 メモ2 メモ3 出現回数
-- ----- ----- ----- --------
1 abcde fghij klmno 0
2 01234 56789 abcde 10
3 01234 56789 01234 15
データ作成スクリプト
create Table メモ(
No number(1),
メモ1 varchar2(5),
メモ2 varchar2(5),
メモ3 varchar2(5));
insert into メモ values(1,'abcde','fghij','klmno');
insert into メモ values(2,'01234','56789','abcde');
insert into メモ values(3,'01234','56789','01234');
commit;
SQL
select No,メモ1,メモ2,メモ3,
nvl2(translate(メモ1 || メモ2 || メモ3,'a0123456789','a'),
Length(メモ1 || メモ2 || メモ3) - Length(translate(メモ1 || メモ2 || メモ3,'a0123456789','a')),
Length(メモ1 || メモ2 || メモ3)) as 出現回数
from メモ
order by 出現回数;
解説