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

2018-10-08 10:17:15 +08:00
 azev
现在的情况是想把当前数据库里店铺记录的 id 提供出去 当做 code 码使用
比如分店代码,让员工自己手填进去.

有没有好办法?

现在系统不好做太大变动,所以不想在数据库里增加字段,而是根据一个规则编码和解码.
想过乘上一个数字然后补全什么的,但都不太好,不能确定位数,也不知道能不能保证唯一性.
1189 次点击
所在节点    问与答
5 条回复
prolic
2018-10-08 10:22:58 +08:00
第一位统一写原数字位数,后面补零,拿到统一位数的就随便变了
hearfish
2018-10-08 10:28:34 +08:00
太多了,比如 x * 47 + 953
azev
2018-10-08 10:29:36 +08:00
@prolic 这样? 貌似不错呢

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

10-> 2100

121->21210

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

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

当然,简单粗暴的做法就是 2 楼或者 4 楼的方法,直接用 100000+id 或者 200000-id 后者 id*x+y

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/495486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX