【问题标题】:Get unique random number in mysql table with a format获取具有格式的mysql表中的唯一随机数
【发布时间】:2017-08-02 03:28:45
【问题描述】:

我正在尝试生成一个随机的 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 列中的格式。请帮我解决这个问题。谢谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你可以用 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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      相关资源
      最近更新 更多