您的位置:首页 > 其它

【叶子函数分享三十七】求字符串中汉字的个数

2008-06-30 11:20 239 查看
一、分解字符串法

首先创建这个函数:



/*将字符串分解*/
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'

--此例说明此方法不受数据类型限制
*/
© 【叶子】http://blog.csdn.net/maco_wang 原创作品,转贴请注明作者和出处,留此信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: