希望删除MySQL某表中某字段里所有连续的空行空白行应该用什么命令呢?

解决方案 »

  1.   

    delete from mytable where colname is null;delete from mytable where colname = '';
    
      

  2.   

    具体说下就是比如MySQL库中表posts中message字段里面所有记录里面由于连续回车,TAB制表符,空格,或者他们三者的组合造成的空行目的主要就是想删掉我的论坛(DISCUZ7)里面帖子中的空行另外如果也想删除连续空行之后所有内容又该怎么操做呢?比如要删除:3个回车,一个TAB制表符,一个回车,5个空格,之后的所有内容因为都是空白嘛,所以可能不知道具体是什么造成的,或怎么组合的,就是说有没有一个通用的办法呢,谢谢大家
      

  3.   

    再具体就是
    update posts set message=left(message,char_length(message)-instr(message,'我所说的连续空行怎么表达?'));update posts set message=SUBSTRING_INDEX(message,'我所说的连续空行怎么表达?',1);或者说我所选的语句能否这样用,这里用正则可以吗?如果不能还有什么办法呢?
      

  4.   

    update posts set message=replace(message,'\n\n','\n') where message like '%\n\n%'多运行几遍,相当于是把两个空行变成一个空行。当row update为0时就OK了。如果程序中你可以通过ROW_COUNT() 或者直接API的返回知道有多少行被更新了。
      

  5.   

    首先感谢acmain我试了一下,是在phpMyAdmin里面输入的,上图说吧
    要修改的字段message下图中红框所示这个字段中某记录的空白行如下图所示,写的很丑别笑偶^-^phpMyAdmin里面输入如下命令后的结果为下图
    察看后,发现字段中的空行依然存在,不知道什么原因,好像就没有认到\n这个东西,再帮我看看吧,谢谢啦
      

  6.   

    空白行到底是什么,从视觉上很多种情况都有可能是空白行比如 '\n \n  \t    \n' 这也看起来是空白行.你需要查看你具体的情况,找出那些空白行到底是什么,然后进行替换。
      

  7.   

    用下面语句看一下你的问题到底是什么。我这里的实际效果并没有把\n作为回车来代表,而是就当\n这两个字符本身了
    第一个语句的结果可以验证这个问题。
    第二个语句,可以看一下你所看到的空行到底是什么。mysql> select hex('\n\n');
    +-------------+
    | hex('\n\n') |
    +-------------+
    | 0A0A        |
    +-------------+
    1 row in set (0.11 sec)
    mysql> select hex(message) from post;
    +----------------------------------------------------------+
    | hex(message)                                             |
    +----------------------------------------------------------+
    | 31323331616620337165727120720A0A0A0A0A616466776572       |
    | 3132333161662033716572712072232323232323236E616466776572 |
    +----------------------------------------------------------+
    2 rows in set (0.05 sec)mysql>
      

  8.   

    OK,明白了,呵呵,HEX后发现我内容中的空行形式是如0D0A0D0A0D0A这样的,所以匹配\r\n\r\n\r\n这个就可以了,谢谢ACMAIN