[MSSQL]求字符串中汉字的个数

这篇博客介绍了两种在MSSQL中计算字符串中汉字个数的方法:一是通过分解字符串并检查ASCII码来计数,二是利用字符字节长度与字符串长度的差值来计算。并提供了相应的函数创建示例和使用示例。
摘要由CSDN通过智能技术生成
 
一、分解字符串法
首先创建这个函数:
/*将字符串分解*/

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'

--此例说明此方法不受数据类型限制

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值