首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL生成随机数据

MySQL生成随机数据
EN

Stack Overflow用户
提问于 2013-08-21 19:05:23
回答 4查看 13.5K关注 0票数 8

在MySQL中,我需要一些表将电话号码和电子邮件地址随机化,以便为开发目的随机生成。

在MySQL中,我如何为电话号码生成7位唯一的随机数字?

如何生成像545165498@mailinator.com这样的随机电子邮件地址。

如何使用MySQL查询生成这些随机数据?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-21 19:19:45

MySQL rand()在范围0 <= value < 1.0中返回一个随机浮点值.

乘以另一个数字:UPPER_BOUND并得到它的底部,您将得到0到(上限-1)之间的随机整数,如下所示:

代码语言:javascript
复制
SELECT floor(rand() * 10) as randNum;

这只会给你一个在0到10之间的随机数。

将10改为比您想要生成的值高的数字。

这样的东西:

代码语言:javascript
复制
UPDATE user 
SET email = CONCAT(FLOOR(rand() * 10000000),'@mailinator.com'), 
    PhoneNo = FLOOR(rand() * 10000000)
票数 10
EN

Stack Overflow用户

发布于 2013-08-21 19:08:47

这会给你一个7位长度的随机数。

选择楼层(1000000+ RAND() * 8999999)

像这样的东西应该根据你的要求更新你的电话号码和电子邮件地址。

代码语言:javascript
复制
UPDATE Customers 
SET phone = CAST(FLOOR(1000000 + RAND(8999999) AS VARCHAR), 
email = CONCAT(CAST(FLOOR(1000000 + RAND(8999999) AS VARCHAR), '@mailinator.com')
票数 5
EN

Stack Overflow用户

发布于 2014-01-11 20:47:24

MySQL生成随机数据演练:

随机数介于0(包括)和1排他性之间:

代码语言:javascript
复制
mysql> select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.5485130739850114 |
+--------------------+                                                     
1 row in set (0.00 sec)

随机整数介于0(包含)到10排他之间:

代码语言:javascript
复制
mysql> select floor(rand()*10);
+------------------+
| floor(rand()*10) |
+------------------+
|                6 |
+------------------+
1 row in set (0.00 sec)

随机字母或数字:

代码语言:javascript
复制
mysql> select concat(substring('ABCDEF012345', rand()*36+1, 1));
+---------------------------------------------------------------------------+
| concat(substring('ABCDEF012345', rand()*36+1, 1))                         |
+---------------------------------------------------------------------------+
| F                                                                         |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)

随机字母a到z:

代码语言:javascript
复制
mysql> select char(round(rand()*25)+97);
+---------------------------+
| char(round(rand()*25)+97) |
+---------------------------+
| s                         |
+---------------------------+
1 row in set (0.00 sec)

随机8字符字母数字字符串:

代码语言:javascript
复制
mysql> SELECT LEFT(UUID(), 8);
+-----------------+
| LEFT(UUID(), 8) |
+-----------------+
| c26117af        |
+-----------------+
1 row in set (0.00 sec)

MySQL:中的随机大写字母

代码语言:javascript
复制
mysql> select CHAR( FLOOR(65 + (RAND() * 25)));
+----------------------------------+
| CHAR( FLOOR(65 + (RAND() * 25))) |
+----------------------------------+
| B                                |
+----------------------------------+
1 row in set (0.00 sec)

将随机行加载到表中:

代码语言:javascript
复制
mysql> create table penguin (id INT primary key auto_increment, msg TEXT);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into penguin values (0, LEFT(UUID(), 8));
Query OK, 1 row affected (0.00 sec)

mysql> select * from penguin;
+------+----------+
| id   | msg      |
+------+----------+
|    0 | abab341b |
+------+----------+
1 row in set (0.00 sec)

加载随机行:

制作一个名为dennis的程序,将1000行随机行加载到企鹅中。

代码语言:javascript
复制
mysql> delimiter ;;
mysql> drop procedure if exists dennis;;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> create procedure dennis()
    -> begin
    -> DECLARE int_val INT DEFAULT 0;
    -> myloop : LOOP
    ->   if (int_val = 1000) THEN
    ->     LEAVE myloop;
    ->   end if;
    ->   insert into penguin values (0, LEFT(UUID(), 8));
    ->   set int_val = int_val +1;
    -> end loop;
    -> end;;
Query OK, 0 rows affected (0.00 sec)  

mysql> call dennis();;

mysql> select * from penguin;;
+------+----------+                      
| id   | msg      |              
+------+----------+                   
|    0 | abab341b |                 
|    1 | c5dc08ee |           
|    2 | c5dca476 |
...
+------+----------+

更新表中的所有行以具有随机数据:

代码语言:javascript
复制
mysql> create table foo (id INT primary key auto_increment, msg TEXT);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into foo values (0,'hi');
Query OK, 1 row affected (0.00 sec)

mysql> insert into foo values (0,'hi2');
Query OK, 1 row affected (0.00 sec)

mysql> insert into foo values (0,'hi3');
Query OK, 1 row affected (0.00 sec)

mysql> select * from foo;
+----+------+
| id | msg  |
+----+------+
|  1 | hi   |
|  2 | hi2  |
|  3 | hi3  |
+----+------+
3 rows in set (0.00 sec)

mysql> update foo set msg = rand();
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from foo;
+----+---------------------+
| id | msg                 |
+----+---------------------+
|  1 | 0.42576668451145916 |
|  2 | 0.6385560879842901  |
|  3 | 0.9154804171207178  |
+----+---------------------+
3 rows in set (0.00 sec)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18365640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档