葉子函式分享三十七 求字串中漢字的個數

2021-08-22 17:15:19 字數 1754 閱讀 7257

一、分解字串法

首先建立這個函式:

/*將字串分解*/

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

endreturn

end

然後建立如下函式

/*求字串中漢字個數*/

create

function

[dbo]

.[chinesecountone](

@str_one

nvarchar

(200))

returns

intas

begin

declare

@number_one

intselect

@number_one

=count

(*)from

dbo.

splitchar

(@str_one

)where

ascii

(col

)>

127return

@number_one

end

/*使用示例

select dbo.[chinesecountone] ('china中國beijing北京olympics奧林匹克') */

二、字元位元組求差法

首先建立這個函式:

create

function [dbo].[chinesecount_two] (

@str_one varchar

(200))

returns

intas

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'

--此例說明此方法不受資料型別限制 */

【葉子】

原創作品,轉貼請註明作者和出處,留此資訊。

葉子函式分享五十 無序字元比較函式

go 建立函式 第一版 create function get orderstr str varchar 8000 returns varchar 8000 as begin set str rtrim str declare tb table s varchar 1 a int while len...

葉子函式分享五十六 對字串進行加密解密

create view v rand as select c unicode cast round rand 255,0 astinyint go create function f jmstr str varchar 8000 type bit returns varchar 8000 引數說明 ...

葉子函式分享八 取出字串中的漢字 字母或是數字

go 建立函式 得到字串中的漢字 create function dbo m getchinese chinese nvarchar max returns varchar 100 as begin while patindex 吖 咗 chinese 0 begin set chinese stu...