Bitte schön:
select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;
Technisch gesehen, wenn die Zeichenfolge, die Sie überprüfen möchten, nur das Zeichen enthält, das Sie zählen möchten, gibt die obige Abfrage NULL zurück; Die folgende Abfrage liefert in allen Fällen die richtige Antwort:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
Die letzte 0 in coalesce
fängt den Fall ab, wo Sie in einem leeren String zählen (d.h. NULL, weil length(NULL) =NULL in ORACLE).