【发布时间】:2015-10-22 15:45:59
【问题描述】:
我想在 mysql 中生成一个唯一的随机字母数字数字,以便通过该数字检索数据库中的每个条目,而且它不会是客户端可以识别的序列。请告诉我如何生成这样的数字。
【问题讨论】:
我想在 mysql 中生成一个唯一的随机字母数字数字,以便通过该数字检索数据库中的每个条目,而且它不会是客户端可以识别的序列。请告诉我如何生成这样的数字。
【问题讨论】:
下面的 sql 给你随机的字母数字。
SELECT CAST(CONCAT( CHAR(FLOOR(RAND()*26)+65),FLOOR(100+RAND()*(500-100)))
AS CHAR(50))AS random_alpha_numeric
您可以生成这样的随机数范围。
语法:FLOOR(min_value+RAND()*(max_value-min_value))
您可以在下表中插入随机字母数字数字。
INSERT INTO `table_name` (column_name ) VALUES( CONCAT(
CHAR(FLOOR(RAND()*26)+65),FLOOR(100+RAND()*(500-100))))
谢谢。
【讨论】:
您无法生成唯一的随机数。随着时间的推移,随机性会生成一个已经存储的数字。 您需要制作一个“准随机”数字,这意味着它是基于另一个数据的数字,但它看起来只是随机的。您可以使用表上的主键作为基数来生成“假随机”数
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(50)) AS random_alpha_numeric FROM myTable;
【讨论】: