【问题标题】:Replacing ascii code with spaces using mysql使用mysql用空格替换ascii代码
【发布时间】:2014-05-20 20:06:07
【问题描述】:

我偶然发现了这篇帖子 Trouble in getting rid of spaces in MySql 。关于ASCII码,我也有类似的问题。 Ascii 代码,如 DLE、CAN、FS、GS,但为了缩短它的范围,从 12 月 16 日到 12 月 31 日(OCT 020 到 OCT 037)。

帖子里的代码是这样的

UPDATE ANIMALS
SET PRODUCTS.description = REPLACE(
REPLACE(
   REPLACE(PRODUCTS.description
         ,CHAR(160),' ')
       , CHAR(194), ' ')
   , '  ', ' ');'

我的问题是,如果我的表名是 ANIMALS 并且列名是 description 并且我想删除我在代码之前所说的那些 ascii 代码,我会改变什么。

很抱歉问了一个简单的问题,但我只是 mysql 的新手。请提前帮助和感谢。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    嗯...据我所知,这仍然不是 MySQL 以简洁的方式所做的事情,而只是通过逐个字符替换。

    按照您的模式并以半可读的方式进行布局,这几乎是荒谬的,但应该适用于表格的一次性更新;

    UPDATE ANIMALS
    SET description = 
    REPLACE(
     REPLACE(
      REPLACE(
       REPLACE(
        REPLACE(
         REPLACE(
          REPLACE(
           REPLACE(
            REPLACE( 
             REPLACE(
              REPLACE(
               REPLACE(
                REPLACE(
                 REPLACE(
                  REPLACE(
                   REPLACE(description,
                   CHAR(16),''),
                  CHAR(17),''),
                 CHAR(18),''),
                CHAR(19),''),
               CHAR(20),''),
              CHAR(21),''),
             CHAR(22),''),
            CHAR(23),''),
           CHAR(24),''),
          CHAR(25),''),
         CHAR(26),''),
        CHAR(27),''),
       CHAR(28),''),
      CHAR(29),''),
     CHAR(30),''),
    CHAR(31),'');
    

    An SQLfiddle to test with.

    如果您需要更频繁地执行此操作,您最好创建一个为您执行此操作的函数;

    CREATE FUNCTION STRIP(input VARCHAR(21844)) RETURNS VARCHAR(21844)
    BEGIN
      DECLARE i INT DEFAULT 16;
      LOOP
       SET input = REPLACE(input, CHAR(i), '');
       IF i = 31 THEN
        RETURN input;
       END IF;
       SET i = i + 1;
      END LOOP;
    END;
    //
    

    ...然后就用它来更新;

    UPDATE animals SET description=STRIP(description)
    

    Another SQLfiddle.

    ...并且永远记得在从 Internet 上随机运行可能具有破坏性的 SQL 之前备份您的数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多