Create function test(@a varchar(20))
returns varchar(20)
as
begin
    declare @i int,@b varchar(20)    
    set @i = 1
    set @b = ''
    while substring(@a,@i,1) <> ''
    begin
if substring(@a,@i,1) between '0' and '9' or upper(substring(@a,@i,1)) between 'A' and 'Z'
        set @b = @b + substring(@a,@i,1)
        set @i = @i + 1
    end
    return(@b)
endupdate yourTable set columnB = dbo.Test(columnA)

解决方案 »

  1.   

    create function getStr(@ varchar(1000))
    returns varchar(1000)
    as
    begin
      declare @a varchar(1000)
      while len(@)>0
      begin
        select @a=@a+left(@,1) where left(@,1) like '[0-9A-z]'
        set @=right(@,len(@)-1)
      end
      return @a
    end
    go
    --调用:
    select columnA,dbo.getstr(columnA) columnB from 一个表--如果是update
    update 一个表 set columnB=dbo.getstr(columnA)
      

  2.   

    --建立测试环境
    create table test2(columnA varchar(100),columnB varchar(100) null)
    insert test2(columnA) values('123/DKKD ')
    insert test2(columnA) values('KKKD%334')
    insert test2(columnA) values('KKD-34JK')
    go
    create function f_test2(@a varchar(8000))
    returns varchar(8000)
    as
    begin
    declare @sql varchar(8000)
    set @sql=''
    declare @i int
    set @i=1
    set @a=ltrim(rtrim(@a))
    while @i<=len(@a)
    begin
    if (substring(@a,@i,1) between '0' and '9') or (upper(substring(@a,@i,1)) between 'A' and 'Z')
       set @sql=@sql+substring(@a,@i,1)
    set @i=@i+1
    end
    return(@sql)
    end
    go
    update test2 set columnb=dbo.f_test2(columnA)
    go
    select * from test2
      

  3.   

    你把这个函数放在SQL的查询分析器里运行,这样就行了
    然后运行
    update 一个表 set columnB=dbo.getstr(columnA)