Ето ви:
select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;
Технически, ако низът, който искате да проверите, съдържа само символа, който искате да преброите, горната заявка ще върне NULL; следната заявка ще даде правилния отговор във всички случаи:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
Крайната 0 в coalesce
улавя случая, когато броите в празен низ (т.е. NULL, защото length(NULL) =NULL в ORACLE).