MySQL:嵌入(不尾随)换行符

标签 mysql

我有点问题。我有一个在 AngularJS 站点中使用的旧数据库。 Angular 不喜欢(阅读:窒息)文本列中的换行符,老实说我不需要它们。所以,我很乐意用 REPLACE 替换它们。需要注意的是,如果嵌入了 REGEXP 或 REPLACE,它们似乎找不到与此相关的“\n”字符(或“\r\n”)。

当我这样做

SELECT * FROM my_table WHERE text_column REGEXP '.*\n.*'

我只得到了几个我认为以换行符结尾的点击。

UPDATE my_table SET text_column = REPLACE( text_column, "\n", "" )

它只改变尾随的(大概)。我可能会遗漏一些东西。

想法?

编辑:根据 CBroe 的建议,我转储了内容并在 vim 中检查了它们。看起来换行符实际上是 ^M。根据下面的线程,^M 是 vim 显示 0xD 的方式,它是 windows 回车。我不记得曾经使用 Windows 来填充数据,但我想这并非闻所未闻。 (这应该是 10 多年前)。 Anywho,我将如何匹配/替换这个角色? REGEXP 不会捕获 0xD AFAIK。

最佳答案

我会在 MySQL 之外解决这个问题。

  1. 将表格转储到文件中
  2. 替换文件中的所有错误字符(如解释的 here )
  3. 将表导入回数据库

关于MySQL:嵌入(不尾随)换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27757663/

相关文章:

mysql - 比 MySQL 中的 UUID 更短的非重复字母数字代码

php - 如何创建消息数据的层次结构?

带变量的 PHP MySQL 查询

mysql - 无法登录 phpmyadmin

mysql - 查询中的内连接不起作用

mysql - 如何通过按类型或 ID 区分该列,将一列值显示到多列中

SQL:查找评论数最多的用户

mysql - 分别在多个列中查找最小值

mysql - Sequelize : Get records after updatedAt date

mysql - 将数据库表中的行子集从一个数据库复制到另一个数据库