我已经使用了它,但是我刚刚找到了类似的答案。
我不是后端开发人员,所以我不知道很多SQL。我需要生成并插入一个6位数的随机值,它涉及不存在于同一列中的数字和字符(varchar,我认为)。生成一个不存在于同一列中的随机值
我试过这个FLOOR(RAND() * 401) + 100
,我发现了某个地方,但它只是生成数字......没什么。
我迷路了。
请掌握数据库,用你的随机数字照亮我的方式;
我已经使用了它,但是我刚刚找到了类似的答案。
我不是后端开发人员,所以我不知道很多SQL。我需要生成并插入一个6位数的随机值,它涉及不存在于同一列中的数字和字符(varchar,我认为)。生成一个不存在于同一列中的随机值
我试过这个FLOOR(RAND() * 401) + 100
,我发现了某个地方,但它只是生成数字......没什么。
我迷路了。
请掌握数据库,用你的随机数字照亮我的方式;
SELECT LPAD(CONV(RAND() * POW(36, 6), 10, 36), 6, 0)
这将创建一个6个字符的“随机”字母数字值。
但是:
更新:
但是 - 因为你需要检查,如果该值已经存在,你最好在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通信的任何需求。
你打算用范围[100-500]中的数字很快打出所谓的生日悖论。 –