【问题标题】:How to find MySQL records without any line breaks?如何在没有任何换行符的情况下查找 MySQL 记录?
【发布时间】:2018-12-01 22:41:40
【问题描述】:

我在 MySQL 数据库上有一个巨大的歌词表,我想找到没有任何换行符的歌词。 (数据不包括任何 HTML 代码,如<br>

我怎样才能做到这一点?

【问题讨论】:

  • 换行符是\n?
  • “我怎样才能做到这一点?” ...通过查询数据库并对响应做一些事情?除非您要更具体一些,比如包括数据结构、目前在数据库中保存歌词的方式出了什么问题……某事……没有人可以提供大量帮助。
  • SELECT * FROM lyrics_table WHERE lyrics_column NOT REGEXP '\n'
  • 我想过用 \n 换行,但似乎 SELECT * FROM table WHERE Lyrics NOT REGXP '\n' 也不起作用。它也使用新行收集数据。奇怪..

标签: php mysql sql regex


【解决方案1】:

LIKE 可以与您要查找的特定字符或短语周围的通配符 (%) 一起使用。 NOT LIKE 则相反。假设换行符存储为\n,这是一个应该可以工作的简单查询。

SELECT * FROM table WHERE text NOT LIKE "%\n%"

上述查询将匹配 Windows 和 Unix/Linux 换行符。但是,如果您需要适应基于 Mac 的系统的换行符,您可能还需要匹配 \r

SELECT * FROM table WHERE text NOT LIKE "%\n%" AND NOT LIKE "%\r%"

【讨论】:

  • 谢谢,但它也使用新行收集数据。奇怪...使用 RegExp 也有相同的结果..
  • 不同的操作系统有不同的换行符。 Mac 使用 \r,这可能就是您所看到的。
  • 我在 Windows 上使用 SQLYog Community,在 Debian 上使用 MySQL。仅使用 \n 或 \r 会返回带有新行的数据。而且我在做 INSERT 时只使用 \n 。当我使用 "NOT LIKE \n AND NOT LIKE \r" 运行查询时,它返回的数据没有换行,但我认为这些不是完整的结果。
  • 为什么你认为这些不完整?我假设您使用的是"%\n%""%\r%" 而不仅仅是\n\r,对吧?您可以随时反转它以获取所有确实有换行符的确认...
  • 我认为你是对的,当我尝试使用反向查询时,它似乎返回了完整的结果。
【解决方案2】:

mysql 中的NOT REGEXP 子句可以解决问题。

试试这样的:

SELECT * FROM table WHERE lyrics NOT REGEXP '[\n]'

【讨论】:

  • 谢谢,但它也使用新行收集数据。奇怪...不使用 RegExp 也有相同的结果..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 2014-03-04
  • 1970-01-01
  • 2014-11-17
相关资源
最近更新 更多