Tellen van woorden in een string in Oracle
13 dec
Het tellen van het aantal woorden in een string met SQL in Oracle is niet zo makkelijk als het tellen van het aantal karakters (length() functie). Ik heb met een beetje van Google en een beetje van mezelf een functie geschreven waarmee je kunt tellen hoe vaak een string voorkomt in een andere string. Wil je het aantal woorden weten, dan tel je het aantal spaties + 1 en je hebt het aantal woorden.
Tel het aantal keer een string voorkomt
Onderstaande functie kun je aanmaken in je schema. Deze functie telt het aantal keer dat p_zoekstring voorkomt in p_string. Indien één van beide parameters null is geeft de functie als returnwaarde 0.
CREATE OR REPLACE FUNCTION rc_count_stringinstring (
p_string VARCHAR2,
p_zoekstring VARCHAR2
)
RETURN NUMBER
IS
v_counter NUMBER;
v_next_index NUMBER;
v_string VARCHAR2 (2000);
v_pattern VARCHAR2 (2000);
BEGIN
v_counter := 0;
v_next_index := 1;
v_string := LOWER (p_string);
v_pattern := LOWER (p_zoekstring);
IF p_string IS NULL OR p_zoekstring IS NULL
THEN
RETURN 0;
END IF;
FOR i IN 1 .. LENGTH (v_string)
LOOP
IF (LENGTH (v_pattern) <= LENGTH (v_string) - v_next_index + 1)
AND (SUBSTR (v_string, v_next_index, LENGTH (v_pattern)) = v_pattern
)
THEN
v_counter := v_counter + 1;
END IF;
v_next_index := v_next_index + 1;
END LOOP;
RETURN v_counter;
END;
Tel het aantal woorden
Met onderstaande query tel ik het aantal woorden in de string:
SELECT rc_count_stringinstring ('test test test', ' ')
+ 1 AS aantal_woorden
FROM DUAL;


No comments yet