Из моих экспериментов, похоже, это не так. Если это действительно так, каков наилучший способ удаления разрывов строк? В настоящее время я экспериментирую с параметрами, которые TRIM принимает для удаления символа, начиная с обрезки \n
и \r
.
Не работает ли функция TRIM MySQL без обрезки строк или возврата каретки?
Ответ 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