gpt4 book ai didi

mysql - 生成同一列中不存在的随机值

转载 作者:行者123 更新时间:2023-11-29 11:38:19 28 4
gpt4 key购买 nike

我已经用谷歌搜索过,但我刚刚找到了类似的答案。
我不是后端开发人员,所以不太懂SQL。我需要生成并插入一个 6 位随机值,该值涉及同一列中不存在的数字和字符(我认为是 varchar)。

我尝试了在某处找到的FLOOR(RAND() * 401) + 100,但它只是生成数字......仅此而已。

我迷路了。

请数据库大师们用你的随机数照亮我的道路;-;

最佳答案

SELECT LPAD(CONV(RAND() * POW(36, 6), 10, 36), 6, 0)

这将创建一个 6 个字符的“随机”字母数字值。

但是:

  • 您需要检查该值是否已存在于表中。
  • 分布不相等,因为 rand() 返回的 FLOAT 只有 23 位精度,而 POW(36, 6) 需要 32 位精度。

更新:

但是 - 因为您需要检查该值是否已存在,所以您最好在 PHP 中创建该数字。

$success = false;
while (!$success) {
$rndInt = rand(0, pow(36, 6) - 1);
$rndStr = base_convert ($rndInt, 10, 36);
$rndStr = str_pad($rndStr , 6, "0", STR_PAD_LEFT);

$query = "SELECT 1 FROM your_table WHERE your_column = {$rndStr} LIMIT 1";
$db->query($query);
if (!$db->fetchColumn()) { // value does not exist yet
// insert new random value
$query = "INSERT INTO your_table (your_column) VALUES ({$rndStr})";
$db->query($query);
$success = true; // will terminate the loop
} else { // value already exists
// do nothing - try again in the next loop
}
}

您需要根据您用于 MySQL 通信的内容调整代码。

关于mysql - 生成同一列中不存在的随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36246879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com