zoukankan      html  css  js  c++  java
  • mysql的rand函数

    项目中需要动态随机生成一些固定位数的随机数,如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)<counts) THEN
        
          SET sTempCounts = counts - CHAR_LENGTH(sTemp);
          SET sTemp = CONCAT(sTemp, RIGHT(CONCAT(POW(10,sTempCounts),),sTempCounts));
        END IF;
        
          RETURN sTemp;
    END$$

    DELIMITER ;

     

    不过还得根据需要来随机

    update company set  directors=round(round(rand(),2)*1000),associate=round(round(rand(),2)*1000);

     

    原文来自:http://www.2cto.com/database/201107/95191.html

  • 相关阅读:
    腾讯云学习笔记
    STL常见容器的理解
    C++STL
    Ubuntu:查看目录或文件信息 ls
    安装Ubuntu(通过U盘启动盘)
    C++基础知识
    C++ OpenCV常用的一些函数
    sqlite3主键,外键
    Windows下 Qt添加新模块
    IDE将C++源码生成为可执行文件过程
  • 原文地址:https://www.cnblogs.com/yuwensong/p/3265692.html
Copyright © 2011-2022 走看看