原文链接: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) 第二个参数为其他数字:打印错误提示