我翻过这篇文章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。 Pplease帮助和提前感谢。
答案 0 :(得分:0)
嗯......据我所知,这仍然不是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),'');
如果你需要更经常地做,你可能最好创建一个为你做的功能;
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)
...并且始终记得在从Internet上的随机用户运行可能具有破坏性的SQL之前备份数据库。