トップページに戻る    次のPL/SQLの問題へ

PL/SQL1 正規表現の[0-9]+を模倣

SQLパズル

[0-9]+を抽出して掛け算する。
11ab7c8c9deだと、
11*7*8*9=5544を返す。


PL/SQL

declare
    matchFlag boolean;
    seki pls_Integer := 1;
    matchStr varchar2(4000);
    serchStr constant varchar2(4000):= '11ab7c8c9de';
begin
    for i in 1..length(serchStr) Loop
        if substr(serchStr,i,1) between '0' and '9' then
            if matchFlag then
                matchStr := matchStr || substr(serchStr,i,1);
            else
                matchFlag := true;
                matchStr := substr(serchStr,i,1);
            end if;
        elsif matchFlag then
            matchFlag := false;
            seki := seki * to_number(matchStr);
        end if;
    end Loop;
    DBMS_Output.Put_Line('掛けた結果は' || to_char(seki));
end;
/


解説

情報処理技術者試験でよく出てくるアルゴリズムだったと思います。