Não há função direta para isso, mas você pode fazer isso com um replace:
declare @myvar varchar(20)
set @myvar = 'Hello World'
select len(@myvar) - len(replace(@myvar,'o',''))
Basicamente, isso informa quantos caracteres foram removidos e, portanto, quantas instâncias havia.
Extra:
O acima pode ser estendido para contar as ocorrências de uma string com vários caracteres, dividindo-se pelo comprimento da string que está sendo pesquisada. Por exemplo:
declare @myvar varchar(max), @tocount varchar(20)
set @myvar = 'Hello World, Hello World'
set @tocount = 'lo'
select (len(@myvar) - len(replace(@myvar,@tocount,''))) / LEN(@tocount)