一、分解字串法
首先建立這個函式:
/*將字串分解*/
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...