在PHP中,如果要产生一个5到15之间的随机整型数,则非常简单,只需要:
print rand(5,15);
但在mysql中,rand()函数只能有一个参数。
rand(),rand(N)
当没有指定常量整型参数N时(同rand(1)),rand()函数返回一个范围在0~1.0之间的浮点数。
mysql> select rand();
+---------------------+
| rand() |
+---------------------+
| 0.37178069760257443 |
+---------------------+
1 row in set (0.00 sec)
当指定了常量整型参数N时,则它被用作种子值,用来产生重复序列。
mysql> select rand(3),rand(3),rand(3);
+--------------------+--------------------+--------------------+
| rand(3) | rand(3) | rand(3) |
+--------------------+--------------------+--------------------+
| 0.9057697559760601 | 0.9057697559760601 | 0.9057697559760601 |
+--------------------+--------------------+--------------------+
1 row in set (0.00 sec)
那么,我们如何通过rand()函数获取指定范围的随机整型数呢?
如果我们要获取在i~j之间的整型数R(即:i <= R < j),可以使用这个表达式:
floor(i + rand() * (j – i))
例如想获取随机整型R(5 <= R <15),我们可以使用这条语句实现:
mysql> select floor(5 + rand() * 10);
+------------------------+
| floor(5 + rand() * 10) |
+------------------------+
| 8 |
+------------------------+
1 row in set (0.10 sec)