mysql 中分隔字符串、字母、数字的方法

原文链接:https://blog.csdn.net/oyezhou/article/details/81665643

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
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 ;

利用上述代码,在MySQL中创建一个名为Num_char_extract的函数,即可通过调用该函数进行字符提取。

使用方法如下:

(1) 第二个参数为0:代表提取数字

 

 2) 第二个参数为1:代表提取字母

 

 3) 第二个参数为2:代表提取数字+字母

 

 (4) 第二个参数为3:代表提取汉字

 

 

(5) 第二个参数为其他数字:打印错误提示

 

posted @ 2020-09-10 18:03  yuyu9  阅读(1240)  评论(0)    收藏  举报