在MySQL中如何检测换行符?

3

我已经搜索了几个小时,但没有找到真正有用的东西。

我在多个记录中都有这个:

<p style="text-align: justify;"> SOME TEXT </p>
<p style="text-align: justify;"> MORE TEXT </p>

我想将它更改为这个:
<p style="text-align: justify;"> SOME TEXT 
MORE TEXT </p>

我想保留换行符,但删除第一个结束标记和第二个开始标记。

我尝试过这个:

UPDATE my_table SET my_collumn = REPLACE(my_collumn,'</p> <p style="text-align: justify;">','')

但是它没有检测到,因为它们之间有换行符。

我该如何解决这个问题?

非常感谢。


第一个快照中显示的两行,它们存储在一个单独的MySql记录中吗? - Darius X.
是的,它总是在单个记录中。 - itachi42
3个回答

2
如果可能的话,最好在您选择的编程语言中进行此类替换,这将提供比MySQL更强大的字符串处理能力。尽管如此,MySQL在字符串中识别几种C风格的字符转义,包括\r\n;因此,在MySQL字符串中的CRLF只是'\r\n'

谢谢你的回答。当我搜索'\r\n'时,它会找到很多出现次数。但是如果我添加</p>或<p style="text-align: justify;">,它就再也找不到了。有任何想法为什么吗?</p>\r\n<p style="text-align: justify;"> - itachi42
可能在换行符的两侧有空格,或者其他不明显的字符。因此,我建议如果可能的话,在代码中进行这种转换,而不是查询,并且最好使用支持强大正则表达式的编程语言来实现。 - Aaron Miller
@itachi42 如果可以的话,尽量用代码实现,就像DanFromGermany建议的那样--否则,我真的不知道该怎么建议了,只能说“再试一次”。 - Aaron Miller

1
我建议您不要使用MySQL进行字符串操作。这不是数据库的主要用途。请使用您正在编写代码的PHP、Perl、ASP等语言。
您可能会遇到以下问题:
在标签之间,您可能需要解析不同的情况,而不是常见的换行符\r\n
<blankspace>\r\n
\n\n
\n
\r\n<blankspace>\r\n
...

有一天,您可能也想要进行更改

<p style="text-align: justify;">

<p class="textClass">

那么你需要再次更改SQL语句。

如果你真的想这样做,可以看看像MySQL中的正则表达式替换这样的UDF。


我将所有内容存储到数据库中,以便我可以更改整个HTML布局 ;) 所以是的,我计划使用CSS。 - itachi42

0
在 SQL Server 中,您可以使用 char(13) + char(10) 来包含换行符:
'</p>' + char(13) + char(10) + '<p ...>'

数字的含义可以在ASCII表中找到:

13 = carriage return
10 = newline

我在MySQL中寻找相同的东西... :/ - itachi42
你看过MySQL字符串函数的文档吗?他回答中的每个函数都有对应的类似函数。 - Barmar
其实,MySQL中有CHAR()函数,所以唯一的区别是您使用CONCAT()函数来连接字符串,而不是使用+运算符。 - Barmar
对于MySQL,请查看Aaron Miller的答案。 - Andomar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接