数据库 备案编号
我想在数据库中设计一个字段(beianbianhao),然后让其按一定的规则进行自动排序。
设计成XXXX-YYYY其中XXXX表示年份,YYYY表示自动编号。列如:20120001
先谢谢大家!
[解决办法]
要不说这个世界还真是巧,真是有缘啊。。。。
我搞好有个一模一样的功能。。。。直接复制了。
public string getLog_No() { string strTemp=""; string sql="select * from (select nvl(log_no,'0') from equip_change_logic t order by log_id desc) where rownum<=1"; MyOraComm.ConnForOracle cfo=new MyOraComm.ConnForOracle("connstr"); cfo.OpenConn(); System.Data.OracleClient.OracleDataReader oraDataRead=cfo.ReturnDataReader(sql); if(oraDataRead.Read()) strTemp=oraDataRead[0].ToString(); else strTemp="0"; oraDataRead.Close(); cfo.CloseConn(); if(strTemp.Length==7) { string year,xuhao; year=strTemp.Substring(0,4); xuhao=strTemp.Substring(4,3); if(year==System.DateTime.Now.ToString("yyyy")) { strTemp=(int.Parse(strTemp)+1).ToString(); } else strTemp=System.DateTime.Now.ToString("yyyy")+"001"; } else { strTemp=System.DateTime.Now.ToString("yyyy")+"001"; } return strTemp; }
[解决办法]
用纯粹的sql效率会比较高些。
create table #temp(
Id int identity(1,1),
DDateTime datetime
)
go
insert into #temp(DDateTime)
select '2010-1-1'
union all
select '2011-2-1'
union all
select '2012-1-1'
union all
select '2011-4-1'
union all
select '2010-1-1'
select *,datepart(year,DDateTime)*1000+id from #temp order by datepart(year,DDateTime)*1000+id asc