一、分解字符串法
首先创建这个函数:
/*将字符串分解*/
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'