第1个回答 推荐于2018-04-12
mysql好久不用了,不记得有没有replace这个函数了。
如果有的话,有个笨办法,但也挺快的,就26个字母,10个数字嘛。
update supply set Description = replace(description, 'a', '')
把其中的a按个换,直到都完事儿了,执行完一次,换下个字符。
这只是个想法,上面的语法不知道对不对。
虽然是笨办法,但相信5分钟内也能解决问题了。
本回答被网友采纳
第2个回答 2018-11-05
速递管家,最专业的跨境电商物流系统服务商
CREATE FUNCTION `fun_change_charextract`(Varstring VARCHAR(200)CHARSET utf8, flag INT) RETURNS varchar(100) CHARSET utf8
COMMENT '将结果根据参数保留为 0纯数字,1纯字母,2数字和字母,3纯汉字'
BEGIN
DECLARE len INT DEFAULT 0;
DECLARE Tmp VARCHAR(200) DEFAULT '';
SET len=CHAR_LENGTH(Varstring);
IF flag = 0
THEN
WHILE len > 0 DO
IF MID(Varstring,len,1)REGEXP'[0-9]' THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSEIF flag=1
THEN
WHILE len > 0 DO
IF (MID(Varstring,len,1)REGEXP '[a-zA-Z]')
THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSEIF flag=2
THEN
WHILE len > 0 DO
IF ( (MID(Varstring,len,1)REGEXP'[0-9]')
OR (MID(Varstring,len,1)REGEXP '[a-zA-Z]') )
THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSEIF flag=3
THEN
WHILE len > 0 DO
IF NOT (MID(Varstring,len,1)REGEXP '^[u0391-uFFE5]')
THEN
SET Tmp=CONCAT(Tmp,MID(Varstring,len,1));
END IF;
SET len = len - 1;
END WHILE;
ELSE
SET Tmp = 'Error: The second paramter should be in (0,1,2,3)';
RETURN Tmp;
END IF;
RETURN REVERSE(Tmp);
END
创建这个函数,然后转换那个列,插入到新字段中
比如: select fun_change_charextract(list,2) from diany