从列mysql中删除所有数字字符

Ron*_*hah 8 regex mysql database

我想开发一个mysql函数,只能从字符串中删除数字字符.

Sas*_*ant 6

您可以编写用户定义的函数,您可以在其中编写替换逻辑,或者您可以尝试:

Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(column,'9',''),'8',''),'7',''),'6',''),'5',''),'4',''),'3',''),'2',''),'1',''),'0','')
Run Code Online (Sandbox Code Playgroud)

  • 呃,那么你是否同意上述答案,正如所写,是误导,应该改变?http://sqlfiddle.com/#!2/5ae225/3/1语句执行,但它实际上只是尝试替换文字字符串'[0-9] +',这显然永远不会被找到. (3认同)
  • 请注意,我无法使用REPLACE(列,'[0-9] +','')与mysql 5.1一起使用.我没有尝试提供替代答案. (2认同)
  • 可悲的是,`mysql`,与`postgresql`不同,不支持开箱即用的正则表达式替换. (2认同)

Fah*_*kar 6

创建功能来完成此任务.

DROP FUNCTION IF EXISTS alphas; 
DELIMITER | 
CREATE FUNCTION alphas( str CHAR(32) ) RETURNS CHAR(16) 
BEGIN 
  DECLARE i, len SMALLINT DEFAULT 1; 
  DECLARE ret CHAR(32) DEFAULT ''; 
  DECLARE c CHAR(1); 
  SET len = CHAR_LENGTH( str ); 
  REPEAT 
    BEGIN 
      SET c = MID( str, i, 1 ); 
      IF c REGEXP '[[:alpha:]]' THEN 
        SET ret=CONCAT(ret,c); 
      END IF; 
      SET i = i + 1; 
    END; 
  UNTIL i > len END REPEAT; 
  RETURN ret; 
END | 
DELIMITER ; 
SELECT alphas('123ab45cde6789fg'); 
+----------------------------+ 
| alphas('123ab45cde6789fg') | 
+----------------------------+ 
| abcdefg                    | 
+----------------------------+ 
Run Code Online (Sandbox Code Playgroud)

如果您只想要数字,请使用此选项

SET GLOBAL log_bin_trust_function_creators=1; 
DROP FUNCTION IF EXISTS digits; 
DELIMITER | 
CREATE FUNCTION digits( str CHAR(32) ) RETURNS CHAR(32) 
BEGIN 
  DECLARE i, len SMALLINT DEFAULT 1; 
  DECLARE ret CHAR(32) DEFAULT ''; 
  DECLARE c CHAR(1); 
  SET len = CHAR_LENGTH( str ); 
  REPEAT 
    BEGIN 
      SET c = MID( str, i, 1 ); 
      IF c BETWEEN '0' AND '9' THEN  
        SET ret=CONCAT(ret,c); 
      END IF; 
      SET i = i + 1; 
    END; 
  UNTIL i > len END REPEAT; 
  RETURN ret; 
END | 
DELIMITER ; 

SELECT digits('123ab45cde6789fg'); 
+----------------------------+ 
| digits('123ab45cde6789fg') | 
+----------------------------+ 
| 123456789                  | 
+----------------------------+ 
Run Code Online (Sandbox Code Playgroud)

参考