mysql只删除文本字段开头的起始\ r \ n?

时间:2017-04-13 18:16:43

标签: mysql regex

由于textarea字段上的编码器编码很差,我在mmy db中有大量的varchar字段(但不是全部..)以新行开头和/或返回" \ r \ n"在文本之前,还包含换行符的文本..

这里可以看到一个例子:http://paraglidingearth.com/?site=14301

我希望我只能删除" \ r \ n"那些是在字段的开头,而不是在文本内部,而不会改变文本本身...

我想在UPDATE mysql查询中需要一些花哨的正则表达式,但我在这里请求帮助,因为我不能自己编写这个过滤器...

感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

如果你想要做的就是从你的字符串中调整前导'\ n'和'\ r \ n',修剪是选择的功能....

set @string:='\r\nHello World';

select @string;
+---------------+
| @string       |
+---------------+
|
Hello World |
+---------------+
1 row in set (0.00 sec)


select trim(leading '\n' from trim(leading '\r\n' from @string));
+-----------------------------------------------------------+
| trim(leading '\n' from trim(leading '\r\n' from @string)) |
+-----------------------------------------------------------+
| Hello World                                               |
+-----------------------------------------------------------+
1 row in set (0.00 sec)



set @string:='\nHello World';

select trim(leading '\n' from trim(leading '\r\n' from @string));
+-----------------------------------------------------------+
| trim(leading '\n' from trim(leading '\r\n' from @string)) |
+-----------------------------------------------------------+
| Hello World                                               |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

以下示例显示字符串中嵌入的换行符将被忽略...

set @string:='Hello\n World';
select trim(leading '\n' from trim(leading '\r\n' from @string));
+-----------------------------------------------------------+
| trim(leading '\n' from trim(leading '\r\n' from @string)) |
+-----------------------------------------------------------+
| Hello
World                                              |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

答案 1 :(得分:0)

他们不是\r\n\n,他们是<br>标记。我检查了您的网站,似乎是<br>标记

只使用mysql,你应该使用

更新字段时,

Mysql REPLACE()TRIM()但这些对您的数据来说是危险的操作。首先备份数据库然后使用REPLACE()TRIM()UPDATE