Home >Database >Mysql Tutorial >Mysql 生成固定位数的随机数_MySQL

Mysql 生成固定位数的随机数_MySQL

WBOY
WBOYOriginal
2016-06-01 13:46:081252browse

bitsCN.com

项目中需要动态随机生成一些固定位数的随机数,如8位,5位等。

之前看到的写法是这样

 ROUND(ROUND(RAND(),5)*100000)

这样写不太准确,有几率出现4位的情况,Rand() 函数是取  0 ~ 1(无限接近) 的随机函数

如果 某此随机数取出的 是  0.05321

那么这样转化出来的就是 5321 ,只有4位。

如果能用一个函数包装一下,取完数值后发现位数不对的时候,就补位进去就比较完美了。

下面是我改的一个函数,不过缺点是 生成的函数位数不能超过20位。当然改一改也是可以了。

DELIMITER $$

USE `prvecard`$$

DROP FUNCTION IF EXISTS `getRand`$$

CREATE DEFINER=`PECARD`@`%` FUNCTION `getRand`(counts INTEGER) RETURNS VARCHAR(20) CHARSET utf8
BEGIN
       DECLARE sTemp VARCHAR(20);
    DECLARE sTempCounts INTEGER;
       SET sTemp = CONCAT( ROUND(ROUND(RAND(),counts)*(POW(10,counts))),);
   
    IF(CHAR_LENGTH(sTemp)   
      SET sTempCounts = counts - CHAR_LENGTH(sTemp);
      SET sTemp = CONCAT(sTemp, RIGHT(CONCAT(POW(10,sTempCounts),),sTempCounts));
    END IF;
   
      RETURN sTemp;
END$$

DELIMITER ;

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn