Nie ma na to bezpośredniej funkcji, ale możesz to zrobić za pomocą zamiany:
declare @myvar varchar(20)
set @myvar = 'Hello World'
select len(@myvar) - len(replace(@myvar,'o',''))
Zasadniczo informuje to, ile znaków zostało usuniętych, a zatem ile było ich wystąpień.
Dodatkowo:
Powyższe można rozszerzyć o zliczanie wystąpień ciągu wieloznakowego, dzieląc przez długość szukanego ciągu. Na przykład:
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)