日期:2014-05-18 浏览次数:20571 次
go create table #spxx( bh int ) insert #spxx select 9999 select case when max(bh)=9999 then right('0000000000000000000000' + ltrim(max(bh)+1),len(ltrim(max(bh)))+1) else right('0000000000000000000000' + ltrim(max(bh)+1),len(ltrim(max(bh)))) end as maxbh from #spxx /* maxbh 10000 */
------解决方案--------------------
写了个例子,自动根据最大的编号进行判断和调整,仅供参考:
create table t1
(
id varchar(10)
)
insert into t1
select '99999'
select * from t1
select MAX(CAST(id as int)) from t1
select case when len(MAX(CAST(id as int))+1)>len(MAX(CAST(id as int)))
then RIGHT('0000000000'+LTRIM(MAX(CAST(id as int))+1),len(MAX(CAST(id as int))+1))
else RIGHT('0000000000'+LTRIM(MAX(CAST(id as int))+1),LEN(max(cast(id as int))))
end
from t1
------解决方案--------------------
另外说一句,楼主你这种编号,每次都要转换数据类型,实在是麻烦的很。
------解决方案--------------------
楼主这样子很难确定吧!最好是指定长度,对于流水号而言,给个设置的规律。
例如字符串总共十五位,前五位是各公司设置的字母前缀,后十位是序号。这样截取应该容易点。