【问题标题】:Auto Increment ID's of 4 digit4位自动递增ID
【发布时间】:2018-02-11 04:19:32
【问题描述】:

我正在创建自动增加客户 ID,以 4 位存储在数据库中。

  1. 如果我只使用数字,那很简单,但我只有 9999 个用户。最后将是 10^4 等于到 10000 客户

  2. 如果我还包括字母,即26个字母。那么最后将是36^4,等于1679616客户

使用字母和数字可以为客户存储 150 万个 IDS。

这是它的工作原理.....

0001

0002

.

.

。 0009

000a

000b

.

.

.

000z

0010

0011

.

.

.

0019

001a

001b

.

.

001z

0020

.

aaa9 .

阿兹

aab0

.

.

最后是zzzz

我在android和java中创建了这段代码............

void increment() {
        chars = mIds.getText().toString().toCharArray();
        String value = "" + getId(chars[3], 3);
        data = chars[0] + "" + chars[1] + "" + chars[2]  + "" + value + "";
        mIds.setText(data + " ");
    }

    private String getId(char aChar, int i) {
        if (Character.getNumericValue(aChar) == 9)
            return 'a' + "";
        else if (aChar == 'z') {
            i = i - 1;
            chars[i] = getId(chars[i], i).charAt(0);
            return '0' + "";
        } else {
            int num = (int) aChar;
            aChar = (char) (++num);
            return aChar + "";
        }
    }

寻找对我有帮助的任何算法或代码.....

如果解决方案真的有帮助,请进入MySQLPHP.....

谢谢大家......

【问题讨论】:

  • 只使用 INT 11 吗?
  • 如何在 id 中包含字母??
  • 你让这变得比它需要的复杂得多
  • 确实,您应该使用 Unsigned INT 以便它可以容纳 4294967295 id 或 Unsigned BIGINT 以便它可以容纳 18446744073709551615 id
  • 我们必须为每个客户分配 ID,这样他才能记住 4 位数的 ID。

标签: php mysql algorithm


【解决方案1】:

将id设为varchar并使用php将id设为这样

<?php
for($i=0;$i<10+27;$i++){
  $number = base_convert($i,10,10+26);//here 26 is for a-z
  $number = str_pad($number, 4, '0', STR_PAD_LEFT);
  echo " ".$number;
}
?>

现场演示:https://eval.in/854013

我希望你能得到last inserted id,然后像上面的循环那样将id加1以插入新记录。

上述php代码的输出是:

0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000a 000b 000c 000d 000e 000f 000g 000h 000i 000j 000k 000l 000m 000n 000o 000p 000q 000r 000s 000t 000u 000v 000w 000x 000y 000z 0010

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 2015-03-10
    • 1970-01-01
    • 2012-03-04
    • 2015-07-05
    • 2014-10-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多