å¦ææåå符串ä¸çæ°åï¼éè¦èªå®ä¹å½æ°ï¼ä»¥ä¸å½æ°å
å«æªåå符串ä¸çæ°åãåæ¯ãæ±åçã
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âï¼æªåä¸æï¼ï¼
第ä¸ä¸ªåæ°ä»£è¡¨æªåçèµ·å§ä½ï¼
第å个åæ°ä»£è¡¨æªåçæªåçç»æä½ã