再具体就是 update posts set message=left(message,char_length(message)-instr(message,'我所说的连续空行怎么表达?'));update posts set message=SUBSTRING_INDEX(message,'我所说的连续空行怎么表达?',1);或者说我所选的语句能否这样用,这里用正则可以吗?如果不能还有什么办法呢?
update posts set message=replace(message,'\n\n','\n') where message like '%\n\n%'多运行几遍,相当于是把两个空行变成一个空行。当row update为0时就OK了。如果程序中你可以通过ROW_COUNT() 或者直接API的返回知道有多少行被更新了。
update posts set message=left(message,char_length(message)-instr(message,'我所说的连续空行怎么表达?'));update posts set message=SUBSTRING_INDEX(message,'我所说的连续空行怎么表达?',1);或者说我所选的语句能否这样用,这里用正则可以吗?如果不能还有什么办法呢?
要修改的字段message下图中红框所示这个字段中某记录的空白行如下图所示,写的很丑别笑偶^-^phpMyAdmin里面输入如下命令后的结果为下图
察看后,发现字段中的空行依然存在,不知道什么原因,好像就没有认到\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>