Не работает ли функция TRIM MySQL без обрезки строк или возврата каретки?

Из моих экспериментов, похоже, это не так. Если это действительно так, каков наилучший способ удаления разрывов строк? В настоящее время я экспериментирую с параметрами, которые TRIM принимает для удаления символа, начиная с обрезки \n и \r.

Ответ 1

Trim() в MySQL удаляет только пробелы.

Я не верю, что есть встроенный способ удаления всех типов конечных и ведущих пробелов в MySQL, если вы не используете повторно Trim().

Я предлагаю вам использовать другой язык для очистки ваших текущих данных и просто убедитесь, что ваши входы теперь дезинфицированы.

Ответ 2

Мои разрывы строк были в середине строки, и я не контролировал исходные данные. Для меня работала следующая команда mysql:

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

Ответ 3

Да, 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).

Ответ 4

Стандартная функция MySQL 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 ");

и он должен удалить все символы новой строки, вкладки и пробелы.

Ответ 5

select trim(both '\r\n' from FIELDNAME) from TABLE; должен работать, если select trim(both '\n' from FIELDNAME) from TABLE; не работает.

Ответ 6

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

Ответ 7

Я мог заставить его работать, создав char;

trim(both char(13) from fieldname)

Ответ 8

Ответы выше, когда они объединены, работают. Полный пример замены строк в начале и в конце поля выглядит следующим образом:

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

Ответ 9

Я столкнулся с одной и той же проблемой с одним из полей. Идеального решения нет. В моем случае мне повезло, что длина поля должна была быть 6. Поэтому я использовал запрос типа

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

Вам просто нужно выбрать лучший вариант, основанный на ваших потребностях. Замена '\n' и '\ r\n' не сработала для меня и просто закончилась тратой времени.

Ответ 10

REPLACE(FIELD,'\r\n',' ') отлично работает в базе данных MySql 5.1