关于 自增问题 想到头爆了 !!!

aierduo 2006-11-23 04:36:00
在表A中
我的 编号规则如下
aaa%dbbb
----------
添加记录时
如果该表为空的则添加
aaa0001bbb
如果表里有记录,假如为
aaa001bbb
aaa002bbb
那么添加的记录应该是
aaa003bbb



请问怎么实现呢
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oooooo126 2006-11-23
  • 打赏
  • 举报
回复
declare @t int,@sql nvarchar
select @t=max(cast(substring(编号,4,len(编号)-6) as int))+1 from 表
set @sql=cast(@t as nvarchar)
while len(@sql)<len(编号)-6
begin
set @sql=''
@sql='0'+@sql
end
set @sql='aaa'+@sql+'bbb'
insert into 表(编号) values(@sql)
oooooo126 2006-11-23
  • 打赏
  • 举报
回复
declare @t int,@sql nvarchar
select @t=cast(substring(编号,4,len(编号)-6) as int)+1 from 表
@sql='aaa'+cast(@t as nvarhchar)+'bbb'
insert into 表(编号) values(@sql)

为空时字节把编号字段设置成非空,把默认值设置成aaa001bbb
playwarcraft 2006-11-23
  • 打赏
  • 举报
回复
建個標示欄位
alter table A add [id] int identity

T上建個促發器
create trigger t1 on A
for insert
as
update T set 编号=stuff(编号,4,3,right(1000+[id],3))
aierduo 2006-11-23
  • 打赏
  • 举报
回复
谢谢各位 我试一试
dawugui 2006-11-23
  • 打赏
  • 举报
回复
--如果记录为空
select 'aaa' + right('000' + cast(1 as varchar) , 3) + 'bbb'
--如果记录不为空
select 'aaa' + right('000' + cast(cast(substring(max(编号规则),4,3) as int) + 1 as varchar) , 3) + 'bbb'
CSDMN 2006-11-23
  • 打赏
  • 举报
回复
建立函数

create function fn_NextNo
returns varchar(20)
as
begin
declare @r int
select @r=isnull(max(cast(substring(编号,4,3) as int))+1,1) from a where 编号 like 'aaa%bbb'
return 'aaa'+right('000'+cast(@r as varchar),3)+'bbb'
end
go

--插入语句
insert into a(编号) select dbo.fn_NextNo()

aierduo 2006-11-23
  • 打赏
  • 举报
回复
写错了 空的时候 添加是
aaa001bbb
上面多了个0

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧