2015-05-22 89 views
0

這個函數應該跳過從0到9的數字 - 沒有別的。爲什麼它也跳過空白?例如。 strip_digits( 「聖Johnes」)導致 「St.Johnes」簡單的MySQL CONCAT功能

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

它,因爲你正在使用CHAR代替VARCHAR。 當存儲CHAR值時,它們用空格填充到指定的長度。當檢索到CHAR值時,刪除尾隨空格。

可以讀取它here

變化都 'RET' 和 'c' 來VARCHAR

+0

這樣做。好的教訓。非常感謝! – VengaVenga