在程式設計中,尤其是針對企業應用的開發,不可以避免的會要生成大量的編號,比如訂單編號、入庫編號等。現在利用sql的儲存過程可以方便的實現自動編號,可以大大的提高程式的復用和減少**的編寫。
主要是利用sql中的convert函式來對日期進行格式化。
比如要做這樣的乙個編號結構:
標識(2位) 日期時間(14位) 流水號(4位)
bh 200702271609541001
程式**如下:
@myval
nvarchar(20
),@maxval
nvarchar(4
)select
@maxval
=max
(right
(inequipnum,4))
+1from
inequip --inequipnum 為編號字段,取最後4位並加1
set@myval
=convert
(varchar(12
),getdate
(),112
)+--取日期組合
(substring
(convert
(varchar(20
),getdate
(),120
),12,2
))+ --取小時
(substring
(convert
(varchar(20
),getdate
(),120
),15,2
))+ --取分鐘
(substring
(convert
(varchar(12
),getdate
(),108),7
,2))+
--取秒
(select
case
when
@maxval
isnull
then
'1000
'--如果編號為空,則先給出乙個值
else
@maxval
end)
select
@myval編號
執行後結果如:bh200702271609541001
附convert函式使用說明:
使用 convert:
convert (data_type[(length)], expression [, style])
select convert(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(convert(varchar, getdate(), 120 ),/'-/',/'/'),/' /',/'/'),/':/',/'/')
20040912110608
select convert(varchar(12) , getdate(), 111 )
2004/09/12
select convert(varchar(12) , getdate(), 112 )
20040912
select convert(varchar(12) , getdate(), 102 )
2004.09.12
select convert(varchar(12) , getdate(), 101 )
09/12/2004
select convert(varchar(12) , getdate(), 108 )
11:06:08
SQL生成流水號
經過了幾次的測試終於成功了 declare year int,month int,day int,temp no varchar 12 needno varchar 4 no varchar 20 number varchar 50 randno varchar 50 nu varchar 10 s...
php生成流水號
function createn i else if i 100 else if i 1000 else echo substr 2012050010 0,6 echo createn 2 2 echo createn 9 9 echo createn 10 10 echo createn 11 1...
Oracle 生成流水號
輔助表 rul sequence 表中資料如圖 輔助儲存過程 proc getseqence create or replace procedure proc getseqence seqcode in varchar2,returnnum out varchar2,messagecode out ...