我在处理数据时遇到一个问题,希望大侠帮忙!
比如在一个表中有一个字段A,中的内容为英文与中文混合,,现在我想把其中的中文内容移动到另一个字段中,该如何实现?(即将A中的中文剪到另一个字段当中)

解决方案 »

  1.   

    create proc Chin
    asdeclare @id int
    declare @field varchar(100)
    declare @I int
    declare @s varchar(1000)
    declare @a table(id int,a varchar(100),b varchar(100))insert @a select 1,'asd你好nfa中华fa32323,',''
    insert @a select 2,'asd成功的23sdf人哪2039askdjfal;kj;lk',''declare @b table(id int,a varchar(100))declare cur_fg cursor for
    select id,a from @a
    open cur_fgfetch next from cur_fg into @id,@fieldwhile @@fetch_status=0
    begin
    set @s=''
    set @i=1
    while @i<=len(@field)
    begin
    if datalength(substring(@field,@i,1))=2
    set @s=@s+substring(@field,@i,1)
    set @i=@i+1
    end
    insert @b select @id,@s
    fetch next from cur_fg into @id,@field
    end
    select * from @b
    close cur_fg
    deallocate cur_fg
    go
    exec Chin
      

  2.   

    不用游标,这样试试:
    if object_id('fnExtractChinese') is not null
        drop function fnExtractChinese
    GO
    ----创建字符串提取函数
    create function fnExtractChinese(@string varchar(100))
    returns varchar(100)
    as
    begin
        declare @str varchar(100)
        set @str = ''
        while PATINDEX('%[吖-座]%',@String) > 0
        begin
            set @str = @str + substring(@String,PATINDEX('%[吖-座]%',@String),1)
            set @String = stuff(@String,PATINDEX('%[吖-座]%',@String),1,'')
        end
    return @str
    end
    GO
    ----创建测试数据
    declare @t table(id int,a varchar(100),b varchar(100))
    insert @t 
    select 1,'asd你好nfa中华fa32323,','' union all
    select 2,'asd成功的23sdf人哪2039askdjfal;kj;lk',''----更新
    update @t set b = dbo.fnExtractChinese(a) from @t
    ----查看
    select * from @t----清除测试环境
    drop function fnExtractChinese/*结果
    id    a                                      b
    ----------------------------------------------------------
    1     asd你好nfa中华fa32323,         你好中华
    2     asd成功的23sdf人哪2039askdjfal;kj;lk   成功的人哪
    */