MySQL TRIM功能是否不修剪换行符或回车符?

时间:2008-11-11 18:17:26

标签: mysql string trim

从我的实验来看,它似乎没有这样做。如果确实如此,删除换行符的最佳方法是什么?我正在尝试TRIM接受要移除的字符的参数,从修剪\n\r开始。

10 个答案:

答案 0 :(得分:45)

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

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

答案 1 :(得分:17)

是的,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)。

答案 2 :(得分:9)

标准的MySQL trim函数与我知道的任何其他语言中的trim函数不同,因为它只删除了精确的字符串匹配,而不是字符串中的任何字符。这个存储的函数更像是你在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 ");

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

答案 3 :(得分:7)

MySQL中的

Trim()仅删除空格。

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

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

答案 4 :(得分:5)

如果select trim(both '\r\n' from FIELDNAME) from TABLE;不起作用,

select trim(both '\n' from FIELDNAME) from TABLE;应该有用。

答案 5 :(得分:3)

select trim(both '\n' from FIELDNAME) from TABLE;

答案 6 :(得分:3)

我只能通过制作char;

来让它发挥作用
trim(both char(13) from fieldname)

答案 7 :(得分:0)

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

UPDATE table SET field=REPLACE(field, field, TRIM(BOTH '\r\n' FROM field))

答案 8 :(得分:0)

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

这样的查询
update events set eventuniqueid = substring(eventuniqueid, 1, 6) where length(eventuniqueid) = 7;

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

答案 9 :(得分:-1)

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