1. 程式人生 > 實用技巧 >mysql 中分隔字串、字母、數字的方法

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) 第二個引數為其他數字:列印錯誤提示