MySQL从列中删除尾随换行符

时间:2013-06-11 12:39:02

标签: mysql

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

7 个答案:

答案 0 :(得分:10)

您可以通过在末尾匹配“\ r”直接替换这些,然后替换“\ r”。

示例:

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

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

答案 1 :(得分:3)

刚遇到这个问题,就像这样照顾它。

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)和空格。

答案 2 :(得分:1)

尝试这样的事情:

REPLACE(FIELD,'\r\n',' ')

答案 3 :(得分:1)

这将删除所有转义字符:

TRIM(TRAILING '\\' FROM (REPLACE(REPLACE(REPLACE(column_name, '\n', ' '), '\r', ' '), '\\', ' ')))

答案 4 :(得分:0)

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

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

基本上这应该取代回车并且什么也不做。

祝你好运。

答案 5 :(得分:0)

基于EternalHour的answer

conda install --channel https://conda.anaconda.org/Yaafe yaafe

这个一个一个地删除尾随UPDATE TABLE_NAME SET `COLUMN_NAME` = TRIM(TRIM(TRAILING '\r' FROM TRIM(TRAILING '\n' FROM TRIM(`COLUMN_NAME`)))) ,因此要么是换行符,要么是回车符或两者都有,它将被剥离,并且还会删除该过程之前和之后的空格。

答案 6 :(得分:0)

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

清理此问题的正确方法是首先删除换行符之后的空格。然后删除换行符和换行符之前可能存在的空格。

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

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

UPDATE table SET column = REGEXP_REPLACE(column, '[ \\r\\n]*$', '');