单据流水号问题

ywz1111111111 2009-10-31 09:01:32
一表中有单据号:0101 0102 0103......
通过SQL语句如何获得最大单据号并加1,得到0104
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorcai2006 2009-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangck 的回复:]
SQL codedeclare@nointset@no=isnull((selectmax(cast(noasint))from tb),0);selectright(10000+@no+1,4);
[/Quote]

引用小梁的语句,也可以使用POWER函数,自定义字段的长度
ks_reny 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 free_windy 的回复:]
另外建个表记录最大ID,每将取一次就更新一下
declare @maxid
select @maxid = maxid from mytable where 表名='单据'
update mytable set maxid = maxid + 1 where 表名='单据'
这样做性能最好.数据量再也这个表也就只有一条数据.取出来生成单号最快

[/Quote]
楼主考虑一下并发的情况。
xuejie09242 2009-10-31
  • 打赏
  • 举报
回复
转换成数字加1再转换成字符了。
dzxccsu 2009-10-31
  • 打赏
  • 举报
回复
update t set id=id+1
liangCK 2009-10-31
  • 打赏
  • 举报
回复
declare @no int
set @no = isnull((select max(cast(no as int)) from tb),0);

select right(10000+@no+1,4);
Free_Windy 2009-10-31
  • 打赏
  • 举报
回复
另外建个表记录最大ID,每将取一次就更新一下
declare @maxid
select @maxid = maxid from mytable where 表名='单据'
update mytable set maxid = maxid + 1 where 表名='单据'
这样做性能最好.数据量再也这个表也就只有一条数据.取出来生成单号最快

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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