Của bạn đây:
select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;
Về mặt kỹ thuật, nếu chuỗi bạn muốn kiểm tra chỉ chứa ký tự bạn muốn đếm, truy vấn trên sẽ trả về NULL; truy vấn sau sẽ đưa ra câu trả lời chính xác trong mọi trường hợp:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
Số 0 cuối cùng trong coalesce
bắt trường hợp bạn đang đếm trong một chuỗi trống (tức là NULL, vì length (NULL) =NULL trong ORACLE).