【MSSQL】 如何找出不連續的缺值

【MSSQL】 如何找出不連續的缺值

最近公司因為專案有個需求

就是 產出 有流水號的訂單編號

譬如說1,2,3,4,5,6

有開發經驗的你一定想說~天啊!這很基本吧?

用MSSQL 把 ID這個東西設為 Int 然後給他設定主鍵 然後識別規格把他調為 "是" "1","1"

如下圖

每個簡單的問題背後都有一個 btw、但是....

客戶會需要的是什麼呢? 他想要的是可以顯示出是什麼時候的訂單 ,然後是流水號

也就是

第一筆 AA201801010001

第二筆 AA201801010002

第三筆 AA201801010003

有開發程式經驗的你,第一個想到的是什麼? 

SUBSTRING 吧? 對!沒錯~就是SUBSTRING

也就是把上面的字去切割 "AA"+"今天日期"+"流水號"

只要判斷後面的今天日期以及流水號就完成了!

那機車的客戶又有個需求啦!就是如果我刪除了 AA201801010002

使用者下一次新增的訂單就必須是 "AA201801010002", 而不是 "AA201801010004"

也就是我這篇文章的重點:如何找出不連續數字的最小值

客戶想要的是這樣!如下圖

那當我刪除了第二筆 也就是AA201801010002 我下次INSERT進去後

怎麼變成AA2018010100002?

現在我用簡單的方法 找出連續數字的缺值

PS:SUBSTRING 語法: 

當我刪掉第二筆

然後在下一次語法

第一筆就是我們的缺值了!

美中不足的是

不會找出第一筆(也就是AA201801010001)

這個韋伯我就從程式後面再做判斷了!

如果各位 有更好的做法可以來留言和我討論哦~

還有如果想要學什麼的?

可以在下面留言,我會先研究一下 在寫上去喔!感謝各位 ^^