29

从我的实验来看,它似乎没有这样做。如果这确实是真的,那么删除换行符的最佳方法是什么?我目前正在试验 TRIM 接受要删除的字符的参数,从 trimming\n\r.

4

10 回答 10

46

我的换行符位于字符串的中间,我无法控制源数据。以下 mysql 命令对我有用:

REPLACE(FIELD,'\r\n',' ')
于 2009-03-05T23:09:17.880 回答
23

是的,Trim()将在 MySQL 中工作。你有两个选择。

1)选择它:

select trim(BOTH '\n' from [field_name]) as field

如果这不起作用,请尝试'\r',如果这不起作用,请尝试'\n\r'

2)用更新替换表中的错误数据......

update [table_name] set [field_name] = trim(BOTH '\n' from [field_name])

我建议先选择来确定您有哪个换行符(\r 或 \n)。

于 2011-05-02T22:55:58.883 回答
10

标准的 MySQLtrim函数不像我知道的任何其他语言中的修剪函数,因为它只删除完全匹配的字符串,而不是字符串中的任何字符。这个存储的函数更像是你在 PHP 中找到的普通修剪,或者在 python 等中删除。

CREATE FUNCTION `multiTrim`(string varchar(1023),remove varchar(63)) RETURNS varchar(1023) CHARSET utf8
BEGIN
  -- Remove trailing chars
  WHILE length(string)>0 and remove LIKE concat('%',substring(string,-1),'%') DO
    set string = substring(string,1,length(string)-1);
  END WHILE;

  -- Remove leading chars
  WHILE length(string)>0 and remove LIKE concat('%',left(string,1),'%') DO
    set string = substring(string,2);
  END WHILE;

  RETURN string;
END;

然后,您应该能够:

select multiTrim(string,"\r\n\t ");

它应该删除所有换行符、制表符和空格。

于 2011-01-14T12:21:26.590 回答
8

select trim(both '\r\n' from FIELDNAME) from TABLE;如果select trim(both '\n' from FIELDNAME) from TABLE;不工作应该工作。

于 2009-01-13T14:47:56.080 回答
5

Trim()在 MySQL 中只删除空格。

我不相信有一种内置的方法可以删除 MySQL 中的各种尾随和前导空格,除非你反复使用Trim().

我建议您使用另一种语言来清理您当前的数据,并确保从现在开始对您的输入进行清理。

于 2008-11-11T18:35:30.360 回答
5

我只能通过制作char;

trim(both char(13) from fieldname)
于 2009-01-25T12:11:23.697 回答
4
select trim(both '\n' from FIELDNAME) from TABLE;
于 2008-11-11T18:21:32.353 回答
0

上面的答案,当结合起来,工作。在字段的开头和结尾替换换行符的完整示例如下所示:

UPDATE table SET field=REPLACE(field, field, TRIM(BOTH '\r\n' FROM field))
于 2010-09-14T13:59:57.820 回答
0

我在其中一个领域遇到了同样的问题。没有完美的解决方案。在我的情况下,我很幸运该字段的长度应该是 6。所以我使用了类似的查询

update events set eventuniqueid = substring(eventuniqueid, 1, 6) where length(eventuniqueid) = 7;

您只需要根据您的需要选择最佳选项。替换 '\n' 和 '\r\n' 对我不起作用,最终浪费了我的时间。

于 2010-10-11T23:39:28.650 回答
-1

REPLACE(FIELD,'\r\n',' ')在 MySql 5.1 数据库上完美运行

于 2010-01-28T15:48:39.560 回答