我正在尝试生成一个随机的 4 位数字,该数字不在数据库中的 mysql 表中。我用过这个:
$res = mysqli_query($conn, "SELECT FLOOR(RAND() * 9999) AS random FROM table WHERE 'random' NOT IN (SELECT v_code FROM table) LIMIT 1");
if($res->num_rows>0){
while($row = $res->fetch_assoc()){
echo $row['random'];
}
}
这很好,可以生成唯一的随机数,但我表中 v_code 列中的值采用以下格式:20171234。它以 2017 作为前缀。我的问题是如何搜索该格式的随机数?另外,我希望该随机数有前导零。例如0123、0321、0432 等 最终要搜索的号码采用以下格式:例如20170123 或 20171234,因为这是数据库表中 v_code 列的格式。请帮我解决这个问题。谢谢。
最佳答案
你可以用 NOT LIKE IN 来做到这一点
$res = mysqli_query($conn, "SELECT FLOOR(RAND() * 9999) AS random FROM table WHERE 'random' NOT LIKE IN (SELECT v_code & '%' FROM table) LIMIT 1");
if($res->num_rows>0){
while($row = $res->fetch_assoc()){
echo $row['random'];
}
}
或者 REGEXP 可能更有效
$res = mysqli_query($conn, "SELECT FLOOR(RAND() * 9999) AS random FROM table WHERE 'random' REGEXP (SELECT v_code & '%' FROM table) LIMIT 1");
关于php - 使用格式获取mysql表中唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450960/