如何实现固定长度的自动编号?
时间:2010-06-03 10:08:00
因客户需求,要把数据库里的索引编号做成五位长度的,且能自动累加编号,我只会在SQL中使用Identity自动编号:
Create Table TestIdent
(
IDCol Int Identity (初始值, 增加值)
)
如指定 Idenetity (5, 5),就会得5、10、15、20……什么的,可要在编号前面补零得到一个形如00025样的东西,我感到为难,请问应该怎样做呢,还是用Identity吗?
Identity是做不到的。我们先借SQL 內建的 Pubs一用,权当客户的数据库,引用下列代码,IDCol 是客户需要的编号长度,TextCol 偷梁换柱:
Create Table TextIdent
(
IDCol Char(5),
TextCol Varchar(64)
)
接着看我们的处理方法!在ASP中,调用SQL 的 Round函数,将文字类型位数转换成数字就可以了,是不是很巧妙?
<%
ConnStr = "Provider=SQLOLEDB;" _
& "Data Source=服务器路径;" _
& "Initial Catalog=Pubs;" _
& "User Id=sa;" _
& "Password=口令"
Set oConn = Server.CreateObject("Adodb.Connection")
oConn.Open ConnStr
sSQL = "select top 1 round(IDCol, 0) as IDX from TextIdent " _
& "order by round(IDCol, 0) desc"
Set oRs = oConn.Execute(sSQL)
If oRs.EOF Then
IDX = 1
Else
IDX = oRs("IDX") + 1
End If
IDX = Right((IDX + 100000), 5)
sSQL = "insert into TextIdent (IDCol, TextCol) values " _
& "('" & IDX & "','test_" & IDX & "')"
oConn.Execute(sSQL)
%>