求快递单号算法

youngsheep 2016-12-01 09:47:12
不知道规则,但经测试以下的单号都是正确的
请各位高手帮忙看一下,这个单号是怎么一个校验的
特别感谢!

70298301242293
70298309242294
70298306242295
70298304242296
70298302242297
...全文
505 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngsheep 2016-12-03
  • 打赏
  • 举报
回复
Up,求算法
Tiger_Zhao 2016-12-01
  • 打赏
  • 举报
回复
猜一猜
7029830 1 242293
7029830 9 242294
7029830 6 242295
7029830 4 242296
7029830 2 242297

配送点或接单员的ID + 校验码 + 序列号

至于校验码怎么来的,天知道。只能查文档/代码了。
中国风 2016-12-01
  • 打赏
  • 举报
回复
这是按区间取号,自己1000000为一个区间,再把区间顺序打乱
SELECT 70298301242293,70298309242294%70298301242293,70298306242295%70298301242293,70298304242296%70298301242293,70298302242297%70298301242293
/*
(无列名)	(无列名)	(无列名)	(无列名)	(无列名)
70298301242293	8000001	5000002	3000003	1000004
*/
快溜 2016-12-01
  • 打赏
  • 举报
回复
REGEXP_LIKE正则验证
卖水果的net 2016-12-01
  • 打赏
  • 举报
回复
这个只能从库里查询,没有规则;
  • 打赏
  • 举报
回复
你什么都没给出来啊。
tcmakebest 2016-12-01
  • 打赏
  • 举报
回复
单号这个东西只要不重复,具体什么规则是快递公司自己搞的.
中国风 2016-12-01
  • 打赏
  • 举报
回复
写个函数验证 e.g.
CREATE TABLE NextSerialNr(
	Code VARCHAR(7),
	NextNr INT
);
INSERT INTO dbo.NextSerialNr
        ( Code,NextNr )
VALUES  ( '7029830',242293  -- NextNr - int
          )
GO

CREATE FUNCTION fn_NextNr(
	@Code VARCHAR(14)='70298304242293'
	
)RETURNS BIT
AS
BEGIN
	DECLARE @Part CHAR(10)='5871964230'--这5个区间顺序未知08753,只能推算格式'xxx19642xx',你最少要最9个号才可能推荐区间顺序
	DECLARE @Nr BIGINT,@Code2 VARCHAR(14);
	SET @Code2=LEFT(@Code,7)
	SELECT @Nr=NextNr FROM dbo.NextSerialNr WITH(NOLOCK) WHERE Code=@Code2
	SET @Code2=@Code2+RTRIM(@Nr%10+1)
	SET @Code2=@Code2+RIGHT(1000000+@Nr,6)
	RETURN (CASE WHEN @Code=@Code2 THEN 1 ELSE 0 END)
 
END

GO
--取号
DECLARE @Code CHAR(14)
SET @Code='70298304242294'
IF  dbo.fn_NextNr(@Code)=0
	PRINT '验证不通过'
ELSE 
	PRINT '通过'

SET @Code='70298304242293'
IF  dbo.fn_NextNr(@Code)=0
	PRINT '验证不通过'
ELSE 
	PRINT '通过'

--取号时要先取70298304242293再取下一个号,循环取号,在取号时处理
/*
验证不通过
通过

*/


22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧