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

MySQL: Embedded (not trailing) newline characters

我有点问题。我有一个在 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 回车 return。我不记得曾经使用 Windows 来填充数据,但我想这并非闻所未闻。 (这应该是 10 多年前)。 Anywho,我怎么会match/replace这个角色? REGEXP 不会捕获 0xD AFAIK。

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

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