【问题标题】:Remove tabs,new line etc from MySQL table从 MySQL 表中删除选项卡、新行等
【发布时间】:2016-01-22 15:38:18
【问题描述】:

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

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

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

我发现了我所期望的结果,但在 JAVA 中。我在 MySQL 中需要相同的结果。

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

怎么做。

【问题讨论】:

  • 似乎没有一个 MySQL 函数可以一次性删除所有空白字符,q.v。 this SO post.

标签: mysql replace special-characters


【解决方案1】:

我们在使用“VT”(垂直制表符)字符时遇到了同样的问题。

以下对我们有用:

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

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

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

【讨论】:

    【解决方案2】:
    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 ;  
    

    【讨论】:

    • 谢谢。更新table 设置field = 替换(field, ' ', '');不工作超过两个或三个空间。
    • 使用存储过程执行查询,直到没有空格为止。
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多