对发帖中出现的一些敏感词汇,如“共产党”,“找死”等词汇需要用*代替
发帖内容用的是ntext类型,如果用convert转换类型为nvarchar 文字过多必然会出现字段丢失的情况 怎么解决大神们告知下

解决方案 »

  1.   

    SQL server 2005有个nvarchar(max)类型,保存跟text一样多
      

  2.   


    update 表名set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值')
    1.update ntext:
    (1)varchar和nvarchar类型是支持replace,所以如果你的text/ntext不超过8000/4000可以先转换成前面两种类型再使用replace。
    update 表名
       set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值')update 表名
        set ntext类型字段名=replace(convert(nvarchar(4000),ntext类型字段名),'要替换的字符','替换成的值')(2)如果text/ntext超过8000/4000,看如下例子
    declare @pos int
        declare @len int
        declare @str nvarchar(4000)
        declare @des nvarchar(4000)
        declare @count int
       set @des ='<requested_amount+1>'--要替换成的值
       set @len=len(@des)
       set @str= '<requested_amount>'--要替换的字符
       set @count=0--统计次数.
        WHILE 1=1
       BEGIN
           select @pos=patINDEX('%'+@des+'%',propxmldata) - 1
           from 表名
           where 条件
          IF @pos>=0
          begin
               DECLARE @ptrval binary(16)
              SELECT @ptrval = TEXTPTR(字段名)
              from 表名
              where 条件
              UPDATETEXT 表名.字段名 @ptrval @pos @len @str
              set @count=@count+1
          end
          ELSE
             break;
       END
       select @count