update myabc set step1=step1+convert(ntext,'10000')  where id =10210810

解决方案 »

  1.   

    to  viptiger(六嘎) 
    不行
    提示
    对数据类型而言运算符无效。运算符为 add,类型为 ntext。
      

  2.   


    --text字段替换处理示例
    --邹建 2004.07(引用请保留此信息)--测试数据
    create table tb(id int identity(1,1),content ntext)
    insert tb select '001,002'
    union all select '001,002,003,004,005,006,007,008,009,010'
    go--替换处理
    declare @s_str nvarchar(4000),@r_str nvarchar(4000)
    select @s_str='02'  --要替换的字符串
    ,@r_str='**02'  --替换成该字符串--替换处理
    declare @id int,@ptr varbinary(16)
    declare @start int,@s nvarchar(4000),@len int
    declare @s_str1 nvarchar(4000),@s_len int,@i int,@step intselect @s_str1=reverse(@s_str),@s_len=len(@s_str)
    ,@step=case when len(@r_str)>len(@s_str)
    then 4000/len(@r_str)*len(@s_str)
    else 4000 enddeclare tb cursor local for 
    select id,start=charindex(@s_str,[content])-1
    from [tb]
    where id=2 --替换id=1的记录
    and charindex(@s_str,[content])>0open tb 
    fetch tb into @id,@start
    while @@fetch_status=0
    begin
    select @ptr=textptr([content])
    ,@s=substring([content],@start+1,@step)
    from [tb]
    where id=@idwhile len(@s)>=@s_len
    begin
    select @len=len(@s),@i=charindex(@s_str1,reverse(@s))
    if @i>0
    begin
    select @i=case when @i>=@s_len then @s_len else @i end
    ,@s=replace(@s,@s_str,@r_str)
    updatetext [tb].[content] @ptr @start @len @s
    end
    else
    set @i=@s_len
    select @start=@start+len(@s)-@i+1
    ,@s=substring([content],@start+1,@step)
    from [tb]
    where id=@id
    end
    fetch tb into @id,@start
    end
    close tb
    deallocate tb
    go--显示处理结果
    select * from tb
    go--删除测试
    drop table tb/*--测试结果id          content                                       
    ----------- ----------------------------------------------
    1           001,002
    2           001,0**02,003,004,005,006,007,008,009,010(所影响的行数为 2 行)--*/
      

  3.   


    DECLARE @ptrval binary(16)SELECT @ptrval = TEXTPTR(step1) 
    FROM myabc 
    where id =10210810
       UPDATETEXT  myabc.step1  @ptrval  null 0 '10000'