Вы можете повторить строковые операции:
select substring(failover, 11, 5) as num1,
substring(failover, 17, 5) as num2,
substring(failover, 23, 5) as num3
from dbo.f009
where failover like '$D$Failov:%';
Вы также можете сформулировать это как рекурсивный CTE, если у вас есть неопределенное количество значений:
with t as (
select * from (values ('$D$Failov:12345:54362:28564'), ('$D$Failov:12345:')) v(failover)
),
cte as (
select failover, convert(varchar(max), NULL) as acct, convert(varchar(max), stuff(failover, 1, 10, '')) as rest, 0 as lev
from t
union all
select failover, left(rest, 5), stuff(rest, 1, 6, ''), lev + 1
from cte
where rest > ':'
)
select failover, acct, lev
from cte
where lev > 0;
Здесь - это дБ <> скрипка.