展开全部
如果提取字符串中的数32313133353236313431303231363533e58685e5aeb931333337613930字,需要自定义函数,以下函数包含截取字符串中的数字、字母、汉字等。create function fn_myget
(@str as varchar(max),
@category as varchar(10)='Chinese',
@start as int=1,
@end as int=100000)
returns varchar(max)
as
begin
declare @i int=@start
declare @lenstr int=len(@str)
declare @str1 varchar(max)
declare @strre varchar(max)=''
while @i<=@lenstr and @i<=@end
begin
set @str1=substring(@str,@i,1);
--提取汉字
if(@Category='Chinese')
begin
if(len(@str1)!=datalength(@str1))
set @strre=@strre+@str1
end
--提取字母
else if(@Category='Letters')
begin
if((ascii(@str1)>=65 and ascii(@str1)<=90 or ascii(@str1)>=97 and ascii(@str1)<=122))
set @strre=@strre+@str1
end
--提取数字
else if(@Category='Digital')
begin
if(ascii(@str1)>=48 and ascii(@str1)<=57)
set @strre=@strre+@str1
end
else
set @strre='输入错误'
set @i=@i+1
end
return(@strre)
end
测试:
1、截取字符串dsajf23423423中的数字select dbo.fn_myget('dsajf23423423','Digital',1,1000)
结果:
2、截取字符串dsajf23423423中的字母select dbo.fn_myget('dsajf23423423','Letters',1,1000)
结果:
3、截取“说多了几分134lljjf爱”中的中文select dbo.fn_myget('说多了几分134lljjf爱','Chinese',1,1000)
结果:
自定义函数说明:
函数共需要4个参数:
第一个参数是要截取的字符串;
第二个参数根据要截取的内容不同,分别有“Digital”(截取数字)、“Letters”(截取字母)、“Chinese”(截取中文);
第三个参数代表截取的起始位;
第四个参数代表截取的截取的结束位。