Hier ga je:
select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;
Technisch gezien, als de string die u wilt controleren alleen het teken bevat dat u wilt tellen, zal de bovenstaande query NULL retourneren; de volgende vraag geeft in alle gevallen het juiste antwoord:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
De laatste 0 in coalesce
vangt het geval op waarin je telt in een lege tekenreeks (d.w.z. NULL, omdat lengte (NULL) =NULL in ORACLE).