简单的MySQL CONCAT功能

时间:2015-05-22 09:03:30

标签: mysql

此功能应跳过0到9之间的数字 - 没有别的。为什么它也会跳过空白?例如。 strip_digits(“St.Johnes”)导致“St.Johnes”

BEGIN 
  DECLARE i, len SMALLINT DEFAULT 1; 
  DECLARE ret CHAR(255) DEFAULT ''; 
  DECLARE c CHAR(1); 
  SET len = CHAR_LENGTH( str );
  SET ret = '';
  REPEAT 
    BEGIN 
      SET c = MID( str, i, 1 ); 
      IF ASCII(c)<ASCII('0') OR ASCII(c)>ASCII('9') THEN 
        SET ret=CONCAT(ret,c); 
      END IF; 
      SET i = i + 1; 
    END; 
  UNTIL i > len END REPEAT; 
  RETURN ret; 
END

1 个答案:

答案 0 :(得分:2)

因为您使用的是CHAR而不是VARCHAR。 存储CHAR值时,会使用指定长度的空格右边填充它们。检索CHAR值时,将删除尾随空格。

您可以阅读here

将'ret'和'c'都更改为VARCHAR