求字符串中汉字的个数

一、分解字符串法

首先创建这个函数:

 

/*将字符串分解*/

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'

原文地址:https://www.cnblogs.com/accumulater/p/6244667.html