查找字符串出现的次数和索引

v21*_*103 0 sql sql-server

假设给定一个字符串,我怎样才能得到字符,不。单个查询中的出现次数和出现索引?

例如:顾问

字符出现次数索引:

C   1   1
O   1   2
N   2   3,9
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您可以使用递归 CTE 将其拆分然后聚合:

with cte as (
      select convert(varchar(max), null) as c, convert(varchar(max), 'Consultant') as rest, 0 as lev
      union all
      select left(rest, 1), stuff(rest, 1, 1, ''), lev + 1
      from cte
      where rest <> ''
     )
select c, count(*), string_agg(lev, ',')
from cte
where lev > 0
group by c;
Run Code Online (Sandbox Code Playgroud)

是一个 db<>fiddle。