As of Oracle 11 you can use the REGEXP_COUNT function to count the number of occurrences of a word or string in a varchar. However, if you’re using Oracle 10 you may be able to achieve something similar as shown below.
select mytext,
nvl(length(regexp_replace(regexp_replace(replace(mytext, '~', ' '),
'two', '~', 1, 0, 'i'), '[^~]', '')), 0) as word_count
from (select 'one two two three three three' as mytext
from dual);
In this example we count how many times the word ‘two’ appears in the text: ‘one two two three three three’.
