sql如何定義一個7位數流水號,且個位數不能為‘4’,個位數到3時,下一個直接跳到5。其他位數不限制。
uj5u.com熱心網友回復:
CASE RIGHT((SELECT MAX(流水號) FROM 表),1) WHEN 3 THEN (SELECT MAX(流水號) FROM 表) + 2 ELSE (SELECT MAX(流水號) FROM 表) + 1 ENDuj5u.com熱心網友回復:
請問SQL Server版本.uj5u.com熱心網友回復:
如果是SQL2012及以上版本, 可以用sequence實作,
-- 創建sequence
create sequence dbo.seq0507
as bigint
start with 1
increment by 1;
-- 創建取號存盤程序
create proc dbo.GeneratedNewID(@r char(7) output)
as
begin
set nocount on
declare @n bigint
select @n=next value for dbo.seq0507
if (right(convert(varchar,@n),1)='4')
begin
select @n=next value for dbo.seq0507
end
select @r=replicate('0',7-len(convert(varchar,@n)))+convert(varchar,@n)
return @r
end
-- 取號
declare @lsh char(7)
exec dbo.GeneratedNewID @lsh output
select '流水號'=@lsh
uj5u.com熱心網友回復:
declare @skip_number int
declare @i int = 0
set @skip_number = 4
declare @test as table
(
seqno int
)
insert into @test(seqno)
values(2981091)
while (@i<=20)
begin
insert into @test(seqno)
select case when (max(seqno)+1) % 10 = @skip_number then max(seqno)+2 else max(seqno)+1 end
from @test
set @i = @i + 1
end
select * from @test
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/283396.html
標籤:疑難問題
上一篇:Xampp 啟動MySql問題
