如题

解决方案 »

  1.   


    declare
    @str varchar(100),
    @i int
    set @str='sd深3刻的g飞45机dsf扩大'
    set @i=1
    while @i<=len(@str)
    begin
    if len(unicode(substring(@str,@i,1)))<5
    begin
    set @str=stuff(@str,@i,1,'');
    print @str
    end
    else
    set @i=@i+1;
    end
    select @str
      

  2.   

    create function get_china(@s varchar(50))
    returns varchar(50)
    as
    begin
    declare @i int
    set @i=1
    while patindex('%[^吖-咗]%',@s) > 0 and @i<=len(@s)
    begin
    if substring(@s,@i,1) not like '%[吖-咗]%'
    set @s=stuff(@s,@i,1,'')
    else
    set @i=@i+1
    end
    return @s
    endselect dbo.get_china('哈ab你好cd呵呵,,哈')
      

  3.   

    create function get_china(@s varchar(50)) 
    returns varchar(50) 
    as 
    begin 
    declare @i int 
    set @i=1 
    while patindex('%[^吖-咗]%',@s) > 0 and @i <=len(@s) 
    begin 
    if substring(@s,@i,1) not like '%[吖-咗]%' 
    set @s=stuff(@s,@i,1,'') 
    else 
    set @i=@i+1 
    end 
    return @s 
    end select dbo.get_china('哈ab你好cd呵呵,,哈')
      

  4.   

    create function getnewstr
    (@oldstr varchar(100))
    returns varchar(100)
    as
    begin
    declare @i int
    set @i = 1
    while @i <= len(@oldstr)
    if substring(@oldstr, @i, 1) like('[^吖-座]')
    set @oldstr = replace(@oldstr, substring(@oldstr, @i, 1), '')
    else
    set @i = @i +1
    return @oldstr
    end
    goselect result = dbo.getnewstr('11adfasd1中国aadfaa')
    select result = dbo.getnewstr('11adsf1中国aaadfadsa广东eodsa深adfa圳')drop function dbo.getnewstr
      

  5.   

    参考此贴:
    总结了几个函数,晒晒~ 
    http://topic.csdn.net/u/20080713/00/77925c47-b7fa-4c1b-b307-0328e74a1c09.html?seed=1165773024