Это должно работать
select regexp_count(str_field, '[0-9]{4}-[0-9]{2}-[0-9]{2}') from your table
Для проверки я использовал это
with test_data as (
select '2019-06-01, 2019-06-02, 2019-06-03' str_field union all
select 'This is the first date: 2019-06-01; This is the second date: 2019-06-02'
)
select regexp_count(str_field, '[0-9]{4}-[0-9]{2}-[0-9]{2}') date_count from test_data
Результат
date_count
3
2
Для извлечения вы можете использовать следующий sql, вы можете добавить больше строк в зависимости от того, сколько у вас дат, максимум
with test_data as (select '2019-06-01, 2019-06-02, 2019-06-03' str_field union all
select 'This is the first date: 2019-06-01; This is the second date: 2019-06-02'
)
select regexp_substr(str_field, '[0-9]{4}-[0-9]{2}-[0-9]{2}',1,1) date1,
regexp_substr(str_field, '[0-9]{4}-[0-9]{2}-[0-9]{2}',1,2) date2,
regexp_substr(str_field, '[0-9]{4}-[0-9]{2}-[0-9]{2}',1,3) date3
from test_data
Результат:
date1 date2 date3
2019-06-01 2019-06-02 2019-06-03
2019-06-01 2019-06-02