一、分解字符串法 首先创建这个函数: /*将字符串分解*/ create function [dbo].[SplitChar] ( @str_One Nvarchar(100) ) returns @Result table (col nvarchar(1)) AS BEGIN declare @number_One int select @number_One=1 while @number_One<=len(@str_One) begin insert @Result select substring(@str_One,@number_One,1) select @number_One=@number_One+1 end return END 然后创建如下函数 /*求字符串中汉字个数*/ Create function [dbo].[ChineseCountOne] ( @Str_One nvarchar(200) ) RETURNS int AS BEGIN declare @number_One int SELECT @number_One =count(*) from dbo.SplitChar(@Str_One) where ascii(col)>127 return @number_One END /*使用示例 select dbo.[ChineseCountOne] ('China中国Beijing北京Olympics奥林匹克') */ 二、字符字节求差法 首先创建这个函数: create function [dbo].[Chinesecount_Two] ( @Str_One varchar(200) ) RETURNS int AS BEGIN declare @number_One int set @number_One=(datalength(@Str_One)-len(@Str_One)) return @number_One END /*使用示例 DECLARE @sql_one varchar(200) SET @sql_one='China中国Beijing北京Olympics奥林匹克' DECLARE @sql_two nvarchar(200) SET @sql_two='China中国Beijing北京Olympics奥林匹克' select dbo.[Chinesecount_Two] (@sql_one) '个数one' , dbo.[Chinesecount_Two] (@sql_two) '个数two' --此例说明此方法不受数据类型限制 */
[MSSQL]求字符串中汉字的个数
关注
打赏