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
不可用。
答案 0 :(得分:-1)
这似乎是一个更好的解决方案:
UPDATE FOO set FIELD2 = TRIM(Replace(Replace(Replace(FIELD2,'\t',''),'\n',''),'\r',''));
从其他答案中复制: