第一步 字符串分解为单个字符 /*字符串分解为单个字符*/ create function [dbo].[SplitChar] ( @splitstring nvarchar(500) ) returns @splitchartable TABLE(character nvarchar(1)) AS begin declare @currentindex int; select @currentindex = 1; while @currentindex <=len(@splitstring) begin insert into @splitchartable select substring(@splitstring,@currentindex,1) select @currentindex = @currentindex +1 end return end 第二步 计算每个字符在字符串中的个数,返回table(字符,个数) CREATE function [dbo].[StatisticPerCharCount] ( @inputstring nvarchar(500) ) returns @result TABLE ( [charname] nvarchar(1), [count] int ) AS begin declare @tempchar nvarchar(500) set @inputstring = rtrim(ltrim(@inputstring)) set @inputstring = replace(@inputstring,' ','') set @tempchar='' declare cursor_chars cursor for select * from [dbo].[SplitChar](@inputstring) declare @ch nvarchar(1) declare @length int set @length = len(@inputstring) open cursor_chars fetch cursor_chars into @ch while @@fetch_status =0 begin if(charindex(@ch,@tempchar)=0) begin insert into @result values(@ch, @length-len(replace(@inputstring,@ch,''))) set @tempchar= @tempchar + @ch end fetch cursor_chars into @ch end close cursor_chars deallocate cursor_chars return end 第三步 测试 /*测试*/ declare @string nvarchar(500) set @string = 'alsdk 0poqwer rkj kerie qwel 中国 wejw' select * from [dbo].[StatisticPerCharCount](@string)