azev
V2EX  ›  问与答

怎样把一个 1-4 位数字转为另一个 4-6 位数字 而且保证唯一性且能还原?

  •  
  •   azev · Oct 8, 2018 · 1910 views
    This topic created in 2952 days ago, the information mentioned may be changed or developed.
    现在的情况是想把当前数据库里店铺记录的 id 提供出去 当做 code 码使用
    比如分店代码,让员工自己手填进去.

    有没有好办法?

    现在系统不好做太大变动,所以不想在数据库里增加字段,而是根据一个规则编码和解码.
    想过乘上一个数字然后补全什么的,但都不太好,不能确定位数,也不知道能不能保证唯一性.
    prolic
    prolic
    Oct 8, 2018
    1
    第一位统一写原数字位数,后面补零,拿到统一位数的就随便变了
    hearfish
    hearfish
    Oct 8, 2018
    2
    太多了,比如 x * 47 + 953
    azev
    azev
    OP
    Oct 8, 2018
    3
    @prolic 这样? 貌似不错呢

    1->1100
    2->1200
    9->1900

    10-> 2100

    121->21210

    2318->42318
    9999->49999
    exmario
    exmario
    Oct 8, 2018
    4
    统一前面补 10 凑成 6 位,还原更简单,减 100000 就完事了
    af463419014
    af463419014
    Oct 8, 2018
    5
    如果是我的话,我会建一个单独的表记录店铺 id 和 code 对应关系
    初始空表,封装一个查询器操作这个表,查询器根据 id 返回 code,或者根据 code 返回 id

    查询时,如果表里没有记录,那么生成一个随机且未使用过的 code 记录到表里
    如果有记录,直接返回

    当然,简单粗暴的做法就是 2 楼或者 4 楼的方法,直接用 100000+id 或者 200000-id 后者 id*x+y
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1869 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:09 · PVG 14:09 · LAX 22:09 · JFK 01:09
    ♥ Do have faith in what you're doing.