MySQL имеет встроенную функцию TRIM(), которая может удалять пробелы и новые строки по одному с обеих сторон строки. Однако для удаления альтернативных пространств и новых строк (например: '\ r\n\r\n foo bar\r\n\r\n') потребуется несколько циклов TRIM, которые могут быть выполнены через WHILE DO в функции:
DELIMITER $$
CREATE DEFINER='localhost' FUNCTION 'trim_all'('_s1' TEXT) RETURNS text CHARSET utf8 COLLATE utf8_unicode_ci
NO SQL
BEGIN
DECLARE _s2 TEXT DEFAULT '';
WHILE( CHAR_LENGTH(_s1) != CHAR_LENGTH(_s2) ) DO
SET _s2 = _s1;
SET _s1 = TRIM(TRIM('\r' FROM TRIM('\n' FROM _s1)));
END WHILE;
RETURN _s1;
END$$
DELIMITER ;
Несмотря на то, что эта функция работает (пока), это кажется более сложным для такой простой задачи. Кроме того, такие циклы WHILE DO могут быть опасными.
Вопросы
Заметки:
SHOW VARIABLES LIKE "%version%"
version 5.6.39-83.1
Поэтому REGEXP_REPLACE
недоступен.
Это похоже на лучшее решение:
UPDATE FOO set FIELD2 = TRIM(Replace(Replace(Replace(FIELD2,'\t',''),'\n',''),'\r',''));
Скопировано из этого другого ответа: