求表最大id,并且加1

三下鱼 2008-07-04 10:52:55
有如下表,其中id 字段长度为 char(16)

id

0000000000000001

00000256

aaaa7

aaaab

cc

求出表中最大的id,并且,使其id+1 成为自动生成的id(用来插入新数据)
...全文
246 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
关键需要搞清楚lz的id的排列顺序是什么啊?
lfywy 2008-07-13
  • 打赏
  • 举报
回复
学习了!
sumerainping 2008-07-13
  • 打赏
  • 举报
回复
呵呵,在程序中控制是不是方便一些?
Andy-W 2008-07-13
  • 打赏
  • 举报
回复
有点乱,有点杂!
AsceticMonk 2008-07-13
  • 打赏
  • 举报
回复
c c
ws_hgo 2008-07-13
  • 打赏
  • 举报
回复
kankan.............
taochunsong 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 clq271520093 的回复:]
我也不是很清楚,如果换种要求:那么如果不管那些字母,只要找出有无最大长度是16 的id,有长度是16的id,
求出最大的那个id,最后在此id的基础上+1,可以实现么?
谢谢~
[/Quote]

什么是长度最大的是16啊
你看看
你用的是char(16),条数据的当前字段都是16,因为后面都自动被补充了空格


不知道楼主想要说什么
51Crack 2008-07-12
  • 打赏
  • 举报
回复
程序中处理应该更方便!
loveltjsz 2008-07-12
  • 打赏
  • 举报
回复
select max(id)+1 from table where ISNUMERIC(id)>0
三下鱼 2008-07-04
  • 打赏
  • 举报
回复
具体要怎样操作呢,谢谢,有些实例代码么
zhou968 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 clq271520093 的回复:]
另外,如果我输入 id :aaaa7,并显示了相关信息,想点击button来…
[/Quote]
这个恐怕得要游标来实现了。
三下鱼 2008-07-04
  • 打赏
  • 举报
回复
也感谢所有帮忙回贴的人
三下鱼 2008-07-04
  • 打赏
  • 举报
回复
另外在此也感谢 hery2002
三下鱼 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhou968 的回复:]
楼主请参考下
SQL codedeclare@tbtable([id]nvarchar(16))Insert@tbselectN'0000000000000001'unionallselectN'00000256'unionallselectN'aaaa7'unionallselectN'aaaab'unionallselectN'cc'Selectsubstring(max(id),1,len(max(id))-1)+char(ASCII(right(max(id),1))+1)asidfrom@tb
[/Quote]
============基本上解决了,谢谢 zhou968
另外,如果我输入 id :aaaa7,并显示了相关信息,想点击button来实现显示着条记录的上条记录,或者下条记录
能实现么,谢谢,如果解决了我会追加分的
hery2002 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 clq271520093 的回复:]
我也不是很清楚,如果换种要求:那么如果不管那些字母,只要找出有无最大长度是16 的id,有长度是16的id,
求出最大的那个id,最后在此id的基础上+1,可以实现么?
谢谢~
[/Quote]
你最大长度的ID也有可能是字母的,
除非你的需求改一下,
只求数值类型的ID差不多,
那就是4楼,
如果非要去不管字母或者数字,
那么就要区别对待,
分字母和数字两种情况.
三下鱼 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 FCU 的回复:]
寂然是ID,要加也得有个规律吧,如 1,2,3,

001,002,003

cc002,cc002,cc003
[/Quote]
=====
恩,貌似数据输入的时候没有长度要求,以前的数据可能是什么长度的都有,只是用来查询的
(系统这样要求的,随便输入一个id,如果表中存在,就显示所有信息,如果输入的id 表中不存在,就将这个id,插入表中,所以表中的id数据可能无规律的)
zhou968 2008-07-04
  • 打赏
  • 举报
回复
楼主请参考下

declare @tb table([id] nvarchar(16))
Insert @tb
select N'0000000000000001' union all
select N'00000256' union all
select N'aaaa7' union all
select N'aaaab' union all
select N'cc'
Select substring(max(id),1,len(max(id))-1)+char(ASCII(right(max(id),1))+1) as id from @tb
三下鱼 2008-07-04
  • 打赏
  • 举报
回复
我也不是很清楚,如果换种要求:那么如果不管那些字母,只要找出有无最大长度是16 的id,有长度是16的id,
求出最大的那个id,最后在此id的基础上+1,可以实现么?
谢谢~
yinqi025 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 clq271520093 的帖子:]
有如下表,其中id 字段长度为 char(16)

id

0000000000000001

00000256

aaaa7

aaaab

cc

求出表中最大的id,并且,使其id+1 成为自动生成的id(用来插入新数据)
[/Quote]


你的类型又不是数值型的,,,,,
FCU 2008-07-04
  • 打赏
  • 举报
回复
寂然是ID,要加也得有个规律吧,如 1,2,3,

001,002,003

cc002,cc002,cc003
加载更多回复(17)

22,210

社区成员

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

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