UPDATE  cgxt
SET content = REPLACE(CAST(content AS varchar(8000)), '../../pic', '/pic')
WHERE (CAST(content AS varchar(8000)) LIKE '%../pic%') 

解决方案 »

  1.   

    直接这样不行吗?content什么类型的
    update cgxt set content = replace(content, '../../pic', '/pic')
      

  2.   

    declare @t table(context text)UPDATE  @t
    SET context = REPLACE(CAST(context AS varchar(8000)), '../../pic', '/pic')
    WHERE (CAST(context AS varchar(8000)) LIKE '%../pic%') /*
    (所影响的行数为 0 行)
    */
      

  3.   

    下面的语句在我的机器上执行没有错误.
    不知道你的cgxt表的content字段是定义的什么.
    先试试下面的语句能执行吗?declare @cgxt table(content text,ID int identity(1,1))Insert Into @cgxt(content) Values('../../pic/1')
    Insert Into @cgxt(content) Values('../../pic/2')
    Insert Into @cgxt(content) Values('../../pic/3')
    Insert Into @cgxt(content) Values('../../pic/4')--Select * From @cgxtUPDATE  @cgxt
    SET content = REPLACE(CAST(content AS varchar(8000)), '../../pic', '/pic')
    WHERE (content LIKE '%../pic%') Select * From @cgxt
      

  4.   

    content类型是text
    去掉where也不行,还是一样的错误,会不会是记录多的原因啊~
    如果这个样就能执行
    UPDATE    cgxt  
    SET  content  =  REPLACE(CAST(content  AS  varchar(8000)),  '../../pic',  '/pic')  
    WHERE  (content  LIKE  '%../pic%')  and (id<300)
    如果给id在多点的值就不行了,比如是id<500就不行  
      

  5.   

    你的字段定义的是text吧,这样用like就不行了
      

  6.   

    1、确认一下你的content有没有定义为聚集索引。如果有定义,则在更新时有可能会出错。
       这个错误目前好像没有有效的解决方法。
    2、像这种对于要修改text,ntext,image字段的操作,最好是用writetext或updatetext来进行。
       而不是用update.同时不要记入日志(如果你确实需要记入日志的话,可以加入with log)。我也是从BOL上看来的,理解有误的地方,还请见谅。
      

  7.   

    谢谢各位大哥,小弟只会一般的SQL语句,像是什么存储过程什么的不会~~向你们学习~~