none
sql UPDATETEXT ???来帮下忙 RRS feed

  • 问题

  • A表 有两个字段 

      id 唯一数字域
      InfoTxt text 类型

     我现在要把 id 不是14 的所有 InfoTxt字段 文本后面 都加上 'aaa' 
    按下面执行下来 只有表最后一行加上了 'aaa' 而别的行的InfoTxt 都成了""空的 

    请教前辈们 我怎样做!!!!!!!!!!急 急

    DECLARE @ptrval binary(16) SELECT @ptrval = TEXTPTR(InfoTxt) from U_info where id <> 14
    UPDATETEXT U_info.InfoTxt @ptrval
    null 0  'aaa'

    你们怎样解决

     

     

    2010年5月26日 12:45

答案

  • create table a 
    (
     id int identity(1,1),
     infoTxt text
    )
    insert A select 
    'a' union select 
    'b' union select 
    'c' union select 
    'd' union select 
    'e' union select 
    'f' union select 
    'g' union select 
    'h' 
    go
    CREATE PROCEDURE spUpdateUserLog
    @StrLog text
    AS
    --定义游标,循环处理数据
    declare @uid int 
    declare #tb cursor for select a.id from a where id<>3
    
    open #tb
    fetch next from #tb into @uid
    while @@fetch_status=0
    begin
      --字符串添加处理
      declare @p varbinary(16)
      select @p=textptr(infoTxt) from a where ID=@uid
      updatetext a.InfoTxt @p null 0 'aaa'
      fetch next from #tb into @uid
    end
    close #tb
    deallocate #tb
    go
    
    --调用示例:
    exec spUpdateUserLog 'aaa'
    
    --显示处理结果
    select * from a
    
    go
    /*
    id   infoTxt
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1   aaaa
    2   baaa
    3   c
    4   daaa
    5   eaaa
    6   faaa
    7   gaaa
    8   haaaaaa*/
    --删除测试环境
    drop proc spUpdateUserLog
    
    
    以上实例 为id不为3 不是LZ的14哦
    2010年5月26日 14:19

全部回复

  • InfoTxt  是text 类型
    2010年5月26日 12:46
  • create table a 
    (
     id int identity(1,1),
     infoTxt text
    )
    insert A select 
    'a' union select 
    'b' union select 
    'c' union select 
    'd' union select 
    'e' union select 
    'f' union select 
    'g' union select 
    'h' 
    go
    CREATE PROCEDURE spUpdateUserLog
    @StrLog text
    AS
    --定义游标,循环处理数据
    declare @uid int 
    declare #tb cursor for select a.id from a where id<>3
    
    open #tb
    fetch next from #tb into @uid
    while @@fetch_status=0
    begin
      --字符串添加处理
      declare @p varbinary(16)
      select @p=textptr(infoTxt) from a where ID=@uid
      updatetext a.InfoTxt @p null 0 'aaa'
      fetch next from #tb into @uid
    end
    close #tb
    deallocate #tb
    go
    
    --调用示例:
    exec spUpdateUserLog 'aaa'
    
    --显示处理结果
    select * from a
    
    go
    /*
    id   infoTxt
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1   aaaa
    2   baaa
    3   c
    4   daaa
    5   eaaa
    6   faaa
    7   gaaa
    8   haaaaaa*/
    --删除测试环境
    drop proc spUpdateUserLog
    
    
    以上实例 为id不为3 不是LZ的14哦
    2010年5月26日 14:19
  • feixianxxx 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     包含代码
    你不能重新表决
    1
    已投票 谢谢您
    2010年5月27日 11:44