将随机字符插入MYSQL数据库

时间:2010-03-23 07:54:43

标签: mysql random

我想在用户表号字段中添加100个条目,随机字符长度为10,所有条目也应该是唯一的。我如何使用MYSQL查询代码实现这一目标?

或者我需要使用PHP吗?

请帮我处理代码段。感谢。

4 个答案:

答案 0 :(得分:7)

在mysql中你可以这样做:

insert into table ( SUBSTRING(MD5(RAND()) FROM 1 FOR 10) , field2 , field3) , ( SUBSTRING(MD5(RAND()) FROM 1 FOR 10) , field2 , field3) , .........

..............

在php中的

看到这2个链接:

Short unique id in php

What is the best way to generate a random key within PHP?

答案 1 :(得分:7)

这可能会造成重复,而且时间太长。这是10个字符长:

UPDATE users SET numbers = SUBSTRING(MD5(RAND()) FROM 1 FOR 10)

但是,您仍然可以获得重复值。

所以你可以在你的专栏上放置一个独特的约束。然后尝试更新。如果有重复项,您将收到错误消息。然后再试一次。你只有100个条目,所以它可能没问题。

这是密码吗?

如果是这样,我建议加密该值。当然,你有一个不知道价值是什么的问题。所以你可以创建一个临时表,在那里插入随机值。然后在将值从临时表插入到实际表中时对这些值进行加密。然后,您可以使用临时表作为参考(为用户提供密码等)。希望有所帮助。

答案 2 :(得分:6)

UPDATE TABLE users SET number_field = MD5(RAND());

答案 3 :(得分:0)

您无法生成唯一的随机数。随着时间的推移,随机性将生成已存储的数字。你需要制作一个“准随机”数字,这意味着它是一个基于另一个数据的数字,但它看起来是随机的。您可以使用表格上的主键作为基数来生成“假随机”数字

INSERT INTO myTable(primaryKey,quasiRandom) 
    SELECT IFNULL(MAX(primaryKey),0)+1, CAST(CONCAT(IFNULL(MAX(primaryKey),0)+1,CHAR(FLOOR(RAND()*26)+65),FLOOR(100+RAND()*(500-100)))
 AS CHAR(10)) AS quasiRandom FROM myTable