22,300
社区成员




SELECT 70298301242293,70298309242294%70298301242293,70298306242295%70298301242293,70298304242296%70298301242293,70298302242297%70298301242293
/*
(无列名) (无列名) (无列名) (无列名) (无列名)
70298301242293 8000001 5000002 3000003 1000004
*/
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再取下一个号,循环取号,在取号时处理
/*
验证不通过
通过
*/