从算法上讲,我如何为 SQL Server 列生成一个唯一的、人类可读的、合理长度的订单号。唯一的要求是它引用客户编号,并且可以通过电话轻松重复。
就像是:
- 客户编号 - XXXXXXX - XXXXXXX
RT65-XXXXXXXX-XXXXXXXX
我将如何生成 XXXXXXXX?(使用随机的字母数字数据,然后检查它是否实际上是重复的?)
和
生成这些类型的数字时,最好的方法/考虑是什么?
你是如何在你的应用程序中做到这一点的?
从算法上讲,我如何为 SQL Server 列生成一个唯一的、人类可读的、合理长度的订单号。唯一的要求是它引用客户编号,并且可以通过电话轻松重复。
就像是:
RT65-XXXXXXXX-XXXXXXXX
我将如何生成 XXXXXXXX?(使用随机的字母数字数据,然后检查它是否实际上是重复的?)
和
生成这些类型的数字时,最好的方法/考虑是什么?
你是如何在你的应用程序中做到这一点的?
使用标识列并用零填充。
更改起始值和增量值以适应口味。
(可选)添加 CRC 校验位。
这很愚蠢但相当直截了当,yyyymmddhhmmss 怎么样
并将其与
RT65-XXXXXXXX-XXXXXXXX
在 php 中,您可以执行以下操作:
<?php
$stamp = strtotime("now");
$orderid = 'RT65-'.$stamp.'-'.$REMOTE_ADDR;
$orderid = str_replace(".", "", $orderid);
echo($orderid);
?>