7

我想从我的 MySQL 列中删除尾随换行符。trim() 只删除空格,但我也想删除尾随换行符。有人可以建议吗?

4

7 回答 7

15

您可以通过匹配末尾的“\r”直接从 SQL 替换这些,然后替换那个“\r”。

例子:

UPDATE Person SET firstName = REPLACE(firstName, '\n', '')
where firstName LIKE '%\n'

或者

UPDATE Person SET firstName = REPLACE(firstName, '\r', '')
where firstName LIKE '%\r'
于 2013-12-05T13:13:31.743 回答
4

刚遇到这个问题,就这样处理了。

UPDATE table_name SET col_name = REPLACE(TRIM(TRAILING ' ' FROM col_name), 
                                         TRIM(TRAILING '\r' FROM col_name), 
                                         TRIM(TRAILING '\n' FROM col_name))

这将删除新行 (\n)、回车 (\r) 和空格。

于 2015-04-09T10:09:30.150 回答
2

这将删除所有转义字符:

TRIM(TRAILING '\\' FROM (REPLACE(REPLACE(REPLACE(column_name, '\n', ' '), '\r', ' '), '\\', ' ')))
于 2016-10-01T01:14:33.470 回答
1

根据操作系统,回车将是“\r\n”或只是“\n”。它不会总是“\r\n”。

清理它的正确方法是首先删除换行符之后的空格。然后删除换行符转义字符,然后删除换行符之前可能存在的空格。

UPDATE table SET column = TRIM(TRAILING ' ' FROM TRIM(TRAILING '\r' FROM TRIM(TRAILING '\n' FROM TRIM(TRAILING ' ' FROM column))));

这不适用于嵌套尾随空格和新行的更复杂的情况。您将需要正则表达式替换它,这并非在所有数据库版本中都可用。

UPDATE table SET column = REGEXP_REPLACE(column, '[ \\r\\n]*$', '');
于 2021-07-07T04:08:22.293 回答
0

尝试这样的事情:

REPLACE(FIELD,'\r\n',' ')
于 2013-06-11T13:14:54.123 回答
0

基于 EternalHour 的回答

UPDATE TABLE_NAME SET `COLUMN_NAME` = TRIM(TRIM(TRAILING '\r' FROM TRIM(TRAILING '\n' FROM TRIM(`COLUMN_NAME`))))

这一个一个一个地删除尾随\r\n,因此它是换行符或回车或两者兼而有之,它将被剥离,并且还会在处理之前和之后删除空格。

于 2016-07-29T05:32:18.920 回答
-1

对 Wallack 的想法的另一票,但更具体地说:

Update YOURTABLENAME set YOURCOLUMNNAME = replace(YOURCOLUMNNAME, '\r\n','')

从本质上讲,这应该取代回车并没有任何内容。

祝你好运。

于 2014-04-08T19:40:54.407 回答