首页 > 数据库技术 > 详细

mysql字段中提取汉字,去除数字以及字母

时间:2019-11-28 20:30:59      阅读:874      评论:0      收藏:0      [点我收藏+]

如果只是删除尾部的中文,保留数据,可以用以下的简单方式

MySQL [test]> select 1234万美元 + 0 as num;
+------+
| num  |
+------+
| 1234 |
+------+

 

DELIMITER $$
DROP FUNCTION IF EXISTS `Num_char_extract`$$
CREATE FUNCTION `Num_char_extract`(Varstring VARCHAR(100)CHARSET utf8, flag INT) RETURNS VARCHAR(50) CHARSET utf8
COMMENT 标识 0 提取数字 1 提取字母 2提取数字+字母 3 提取汉字
BEGIN
    DECLARE len INT DEFAULT 0;
    DECLARE Tmp VARCHAR(100) 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$$
DELIMITER ;

-- select Num_char_extract(‘字12段‘,0);

 

mysql字段中提取汉字,去除数字以及字母

原文:https://www.cnblogs.com/chenzechao/p/11953020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!