【问题标题】:Detect line breaks in MySQL?检测 MySQL 中的换行符?
【发布时间】:2013-07-22 18:43:33
【问题描述】:

我已经搜索了几个小时,但找不到任何真正有效的东西。

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

<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;">','')

但是由于它之间的 LINE BREAK,它没有检测到它。

我该如何解决这个问题?

非常感谢

【问题讨论】:

  • 您显示两行的第一个快照,它存储在 SINGLE MySql 记录中?
  • 是的,它总是在一条记录中。

标签: html mysql sql replace line-breaks


【解决方案1】:

如果可能,您最好用您选择的语言进行这种替换,这将提供比 MySQL 更强大的字符串处理能力。也就是说,MySQL 可以识别字符串中的几个 C 风格的character escapes,包括\r\n;因此,MySQL 字符串中的 CRLF 就是 '\r\n'

【讨论】:

  • 感谢您的回答。当我搜索 '\r\n' 时,它会发现大量出现。但是,如果我添加 或

    它再也找不到任何东西了。知道为什么吗?

    \r\n

  • 换行符的两边可能有空格,或者其他不明显的地方——这就是为什么我建议,如果可能的话,在代码中进行这种转换,而不是查询,最好在一种提供强大的正则表达式支持的语言。
  • @itachi42 如果可以,请在代码中执行,正如 DanFromGermany 所建议的那样 - 否则,我不确定该建议什么,请保存“尝试,再试一次”。
【解决方案2】:

我建议你不要使用 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。

如果你真的不想这样做,看看 UDF 之类的

Regex Replace in MySQL

【讨论】:

  • 我将所有内容存储到数据库中,这样我就可以更改整个 HTML 布局;)所以是的,我打算使用 CSS
【解决方案3】:

在 SQL Server 中,您可以使用 char(13) + char(10) 来包含换行符:

'</p>' + char(13) + char(10) + '<p ...>'

数字的含义见ASCII chart

13 = carriage return
10 = newline

【讨论】:

  • 我正在 MySQL 中寻找相同的东西...:/
  • 你看过 MySQL 的字符串函数文档吗?他的回答中都有类似的东西。
  • 其实它有CHAR(),所以唯一的区别是你使用CONCAT()来连接字符串而不是+操作符。
  • 对于 MySQL,请查看 Aaron Miller 的答案。
猜你喜欢
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2016-02-16
  • 1970-01-01
相关资源
最近更新 更多