我用replace更改了supesite的一个字段内容,替换语句:
update tablename set fieldA=replace(fieldA,'no','Welcome');替换后就调用失败了,查看了一下数据库,原来问题出在这里:修改前
a:1:{i:0;s:2:"no";}修改后a:1:{i:0;s:2:"Welcome";}问题就在于 字段内容no是修改了,但是s:2并没有得到修改,所以调用失败。
正确的修改后结果应该是a:1:{i:0;s:7:"Welcome";}请教各位,怎样才能实现这种正确的批量替换,谢谢

解决方案 »

  1.   

    update tablename set fieldA=replace(replace(fieldA,'no','Welcome'),'s:2','s:7');
      

  2.   

    谢谢,但是数据上万条啊,而且字段中还有其他内容,必须实现批量计算才行啊!
    我不懂SQL,但是貌似,S:7是统计字段字符数,请大家指教。
      

  3.   

    没有好办法,需要通过程序来实现,或者在你的C,VB程序中实现,或者是在存储过程中实现。
      

  4.   

    谢谢ACMAIN_CHM的帮助;
    我继续请教一下,您的意思是,a:1:{i:0;s:2: ****;},这个参数不是mysql本身的参数,而是supesite产生的?
    需要需要修改必须修改supesite程序?谢谢!
      

  5.   

    a:1:{i:0;s:2:"no";}
    改成
    a:1:{i:0;s:7:"Welcome";}一共有2个地方要修改,2-->7,no-->Welcome
    那么用update tablename set fieldA=replace(replace(fieldA,'no','Welcome'),'s:2','s:7');
    进行2次替换,肯定是可以的。mysql> select replace(replace('a:1:{i:0;s:2:"no";}','no','Welcome'),'s:2','s:7');
    +--------------------------------------------------------------------+
    | replace(replace('a:1:{i:0;s:2:"no";}','no','Welcome'),'s:2','s:7') |
    +--------------------------------------------------------------------+
    | a:1:{i:0;s:7:"Welcome";}                                           |
    +--------------------------------------------------------------------+
    1 row in set (0.00 sec)至于你的2变成7是怎么来的,由你的业务规则决定。