需求
已知季度,实现给定月份范围生成一个随机月份,月份保留两位数字,不足两位的数字前填充0,即月份属于已知的季度。
如:
已知第三季度,即7-9月份,返回文本07、08、09
已知第四季度,即10-12月份,返回10、11、12
函数功能
通过范围 产生随机数
-- 生成≥2且≤10的随机数
SELECT floor( 2 +rand() * 10 - 2 + 1 );
判断随机数的位数,不足两位补0
-- 正则表达
REGEXP '^.#39;
函数编写
DROP FUNCTION IF EXISTS `随机月份`;
CREATE DEFINER = CURRENT_USER FUNCTION `随机月份`(`m` int,`n` int)
RETURNS VARCHAR(255)
BEGIN
DECLARE temp VARCHAR(255);
DECLARE ret VARCHAR(255);
SET temp = floor(`m`+ rand() * (`n` - `m`+1));
IF temp REGEXP '^.#39; THEN
SET temp = CONCAT('0',CAST(temp AS CHAR));
END IF;
RETURN temp;
END;
函数调用
SELECT 随机月份(9,10);
-- 可产生随机月份:09、10