求mysql数据库表中去除出汉字(去掉汉字等,仅仅其他的)

有一个数据库destoon 里面有个表diany,
表中有个列名list(包含汉字-数字-和其他付好)
,现在要求更新此列,更新后要求仅仅去除住汉字,其他继续保留

仅仅去除汉字没有捷径,只能手动。因为mysql是sqlServer的轻量级数据库,功能有限。
另外。mysql里怎么能有汉字呢,很容易造成错误。
如果时间允许的话,尽量手动去改过来,或者重新建表吧,字段要见名知意就行。。。不然到以后就更费事了。
字段尽量用字母和下划线和数字的组合,不要有汉字、特殊符号和空格。。
磨刀不误砍柴工,祝你成功!!
温馨提示:内容为网友见解,仅供参考
第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
相似回答