从 MySQL table 中删除制表符、新行等

Remove tabs,new line etc from MySQL table

我需要从 MySQL table 的字段中删除多个空格、制表符、换行符、回车符 return、换页符或垂直制表符。

这里How to remove duplicate white spaces in string using Java?

yourString = yourString.replaceAll("\s+", " ");

我在 JAVA 中找到了预期的结果。我需要 MySQL 中的相同结果。

我还需要将所有单引号替换为双引号。

怎么做。

UPDATE `table` SET `field` = REPLACE(`field`, ' ', '');
UPDATE `table` SET `field` = REPLACE(`field`, '\t', '' );
UPDATE `table` SET `field` = REPLACE(`field`, '\n', '');
UPDATE `table` SET `field` = REPLACE(`field`, '\r', '');

UPDATE `table` set `field` = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(`field`,' ',''),'\t',''),'\n',''),'\r',''));

或创建以下存储过程并调用它来删除一行中的多个空白字符

DELIMITER |
    CREATE PROCEDURE myProc()
    BEGIN 
      DECLARE affected INT DEFAULT 1; 
       WHILE affected > 0 DO
         UPDATE `table` set `field` = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(`field`,' ',''),'\t',''),'\n',''),'\r',''));
         SELECT ROW_COUNT() INTO affected;  
       END WHILE; 
    END |
DELIMITER ;  

"VT"(垂直制表符)字符也有同样的问题。

以下为我们工作:

UPDATE `table` SET `field` = REPLACE(`field`, CHAR(11), '');

为了定位带有这个字符的数据,我们使用了这个:

SELECT * FROM `table` WHERE INSTR(`field`, char(11)) > 0;