PL/SQLで文字列内の文字が出現した回数を数える方法
PL/SQLで関数を記述し、文字列内の文字の出現回数を数えることができます。例を以下に示します。
CREATE OR REPLACE FUNCTION count_characters(p_string IN VARCHAR2, p_character IN VARCHAR2) RETURN NUMBER IS
v_count NUMBER := 0;
BEGIN
FOR i IN 1..LENGTH(p_string) LOOP
IF SUBSTR(p_string, i, 1) = p_character THEN
v_count := v_count + 1;
END IF;
END LOOP;
RETURN v_count;
END;
/
この関数は2つの引数を受け取ります。統計化する文字列(p_string)と、その文字列内で統計化する文字(p_character)です。それらは文字列内の各文字を反復処理して統計するループを使用して、現在の文字が指定された文字と一致した場合、カウンターが1ずつ増加します。そして最後に、統計の結果を返します。
関数の呼び出し例を以下に示します。
DECLARE
v_string VARCHAR2(100) := 'hello world';
v_character VARCHAR2(1) := 'o';
v_count NUMBER;
BEGIN
v_count := count_characters(v_string, v_character);
DBMS_OUTPUT.PUT_LINE('Character ' || v_character || ' appears ' || v_count || ' times in the string.');
END;
/
上記の例の出力は「文字’o’は文字列内に2回登場します」となります。