Her går du:
select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;
Teknisk set, hvis den streng, du vil kontrollere, kun indeholder det tegn, du vil tælle, vil ovenstående forespørgsel returnere NULL; følgende forespørgsel vil give det rigtige svar i alle tilfælde:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
Det sidste 0 i coalesce
fanger tilfældet, hvor du tæller i en tom streng (dvs. NULL, fordi længde(NULL) =NULL i ORACLE).