数据表user中有detail字段,保留detail字段内容并追加"2006",怎么追加?

解决方案 »

  1.   

    如果没超过8000字符?
    update user set detail=detail+'2006'
      

  2.   

    update user set detail=cast(detail as varchar(8000))+'2006'
      

  3.   

    不好意思,会说,却把cast(detail as varchar(8000))漏掉了
      

  4.   

    lxzm1001,这个字段的值部分超过了8000字符
      

  5.   

    --测试数据
    CREATE TABLE tb(col ntext)
    -- 插入
    INSERT tb VALUES(REPLICATE( '0001,000,',1))
    --查看
      select * from tb
      --结果
      /*
      0001,000,
      */
    -- 追加数据
    DECLARE @p binary(16)
    SELECT @p=TEXTPTR(col) FROM tb
    UPDATETEXT tb.col @p NULL 0 tb.col @p--值为 NULL 则将新数据追加到现有数据值中。
                                         --值为 0 表示不删除数据。 
    --查看
      select * from tb
      --结果
      /*
      0001,000,0001,000,
      */--重新写内容
    WRITETEXT tb.col @p 'text内容'
    --查看
      select * from tb
      --结果
      /*
      text内容
      */--追加数据
    DECLARE @s VARCHAR(800)
    set @s='追加......!' 
    UPDATETEXT tb.col @p null 0 @s
    --查看
      select * from tb
      --结果
      /*
      text内容追加......!
      */--删除测试表
    drop table tb
      

  6.   

    declare @ptrval binary(16)
    select @ptrval = textptr(字段名) from 表名 where条件
    update 表名.字段名 @ptrval 起始位置 结束位置 替换的字符计算起始位置
    select patindex('%字符串%',字段名) from 表名计算结束位置
    select len('字符串')
      

  7.   

    看错了,上面写的是更新的如果是结尾处追加起始位置
    select datalength(字段名)/2 from 表名结束位置写成0就可以了