Heim > Datenbank > MySQL-Tutorial > mysql 使用RAND()函数生成随机数实例讲解

mysql 使用RAND()函数生成随机数实例讲解

WBOY
Freigeben: 2016-06-01 09:56:52
Original
1088 Leute haben es durchsucht

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

之前看到的写法是这样

<code class="language-sql">ROUND(ROUND(RAND(),5)*100000)</code>
Nach dem Login kopieren

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

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

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

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

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

<code class="language-sql">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="CONCAT(sTemp," right end if return delimiter></counts></code>
Nach dem Login kopieren

不过还得根据需要来随机

<code class="language-sql">update company set  directors=round(round(rand(),2)*1000),associate=round(round(rand(),2)*1000);</code>
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage