Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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