DELIMITER $$ CREATE FUNCTION `replace_number_to_zh`(original VARCHAR(1000)) RETURNS VARCHAR(1000) DETERMINISTIC BEGIN DECLARE temp VARCHAR(1000); DECLARE ch VARCHAR(1); DECLARE i,j INT; DECLARE nums VARCHAR(200); DECLARE cns VARCHAR(200); DECLARE nums_count INT; SET nums = '0,1,2,3,4,5,6,7,8,9'; SET cns = '零,一,二,三,四,五,六,七,八,九'; SET nums_count = CHAR_LENGTH(nums)-CHAR_LENGTH(REPLACE(nums,',','')) + 1; SET i = 1; SET temp = ''; IF original REGEXP '[0-9]' THEN loop_label: LOOP IF i>CHAR_LENGTH(original) THEN LEAVE loop_label; END IF; SET ch = SUBSTRING(original,i,1); IF NOT ch REGEXP '[0-9]' THEN IF ch = ' ' THEN SET i=i+1; ITERATE loop_label; END IF; SET temp = CONCAT(temp,ch); ELSE SET j = 1; WHILE j <= nums_count DO IF ch = SUBSTRING_INDEX(SUBSTRING_INDEX(nums, ',', j),',',-1) THEN SET temp = CONCAT(temp,SUBSTRING_INDEX(SUBSTRING_INDEX(cns, ',', j),',',-1)); END IF; SET j=j+1; END WHILE; END IF; SET i=i+1; END LOOP; ELSE SET temp = original; END IF; RETURN temp; END$$ DELIMITER ;
說實話,之前真沒寫過sql函數。此次涉及到,就勉勉強強寫了個,記錄下便於之後參考。
該函數的功能就是去空格,單個阿拉伯數字換成中文數字。html
主要涉及的點就是數組循環、正則匹配。mysql
參考:http://stackoverflow.com/ques...
http://www.cnblogs.com/caicai...
http://stackoverflow.com/ques...
http://www.cnblogs.com/caorui...sql