求一SQL语句。

Seven_lau 2010-07-26 03:57:00
表中结构如下



id name

A1 aaa

A2 bbb

A3 ccc

A4 ddd

A5 eee
我现在想查出来最大的id 应该怎么写?


...全文
75 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
pt1314917 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 seven_lau 的回复:]
那这个语句的 len(id) as int 是什么意思呢?

SQL code
(id,patindex('%[0-9]%',id),len(id)) as int
[/Quote]
patindex('%[0-9]%',id)是得出id字段中,数字所在的位置,
然后使用substring进行截取,相当于在id字段中,截取字段里面对应的数字进行排序。。
Seven_lau 2010-07-26
  • 打赏
  • 举报
回复
那这个语句的 len(id) as int 是什么意思呢?
(id,patindex('%[0-9]%',id),len(id)) as int
cp298674954 2010-07-26
  • 打赏
  • 举报
回复
SELECT ServerProperty('Collation') --查看当前的排序规则
cp298674954 2010-07-26
  • 打赏
  • 举报
回复
字符串也是可以比较出大小的 按排序规则 只要你的排序规则是你想要的那种 select MAX(id) max_id from #tb就可以
Seven_lau 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pt1314917 的回复:]

SQL code

--楼上的是按字符串来排序的,

--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (id varchar(20),name varchar(3))
insert into [tb]
select 'A1','aaa' union all
select 'A2'……
[/Quote]


OK了 谢谢这位了。 一会写完这个方法结贴。 哈哈 谢谢大家。
cp298674954 2010-07-26
  • 打赏
  • 举报
回复

8 a1 aaa 0 男 班长 aa aaa 啊啊啊啊啊
9 a2 aaa 0 男 班长 aa aaa 啊啊啊啊啊
10 a3 aaa 0 男 班长 aa aaa 啊啊啊啊啊
11 b1 NULL NULL NULL NULL NULL NULL NULL
12 b2 NULL NULL NULL NULL NULL NULL NULL
13 b3 NULL NULL NULL NULL NULL NULL NULL

SELECT TOP 1 *
FROM dbo.Student
ORDER BY SName DESC


13 b3 NULL NULL NULL NULL NULL NULL NULL
hokor 2010-07-26
  • 打赏
  • 举报
回复
select  'A1' id,'aaa' name into #tb 
union all select 'A2','bbb'
union all select 'A3','ccc'
union all select 'A4','ddd'
union all select 'A5','eee'

select MAX(id) max_id from #tb
/*
max_id
------
A5

(1 row(s) affected)
*/
Seven_lau 2010-07-26
  • 打赏
  • 举报
回复
楼上说的这些是可以 可是如果我一直到

A12

A13

这些就查不到了。
pt1314917 2010-07-26
  • 打赏
  • 举报
回复
用max,按照字符串排序查找最大时,楼上的是A5,而不是A11
cp298674954 2010-07-26
  • 打赏
  • 举报
回复
SELECT TOP 1 *
FROM dbo.Student
ORDER BY SName DESC
duanzhi1984 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 seven_lau 的回复:]
引用 1 楼 hokor 的回复:

SQL code
select MAX(id) from tb


查不到我那个是 字符串的。
[/Quote]
可以的,你将你的具体的内容贴出来 。
刚才返回A5

pt1314917 2010-07-26
  • 打赏
  • 举报
回复

--楼上的是按字符串来排序的,

--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (id varchar(20),name varchar(3))
insert into [tb]
select 'A1','aaa' union all
select 'A2','bbb' union all
select 'A3','ccc' union all
select 'A4','ddd' union all
select 'A5','eee' union all
select 'A11','eee'

select top 1 id from [tb] order by cast(substring(id,patindex('%[0-9]%',id),len(id)) as int) desc

--结果:
A11
obuntu 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hokor 的回复:]

引用 2 楼 seven_lau 的回复:
引用 1 楼 hokor 的回复:

SQL code
select MAX(id) from tb


查不到我那个是 字符串的。

max() 支持字符串
[/Quote]

up

楼主实验下不就知道了。
hokor 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 seven_lau 的回复:]
引用 1 楼 hokor 的回复:

SQL code
select MAX(id) from tb


查不到我那个是 字符串的。
[/Quote]
max() 支持字符串
hokor 2010-07-26
  • 打赏
  • 举报
回复
最大ID对应的整行:
select top 1 * from tb order by id desc
duanzhi1984 2010-07-26
  • 打赏
  • 举报
回复
select MAX(id) from tb
Seven_lau 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hokor 的回复:]

SQL code
select MAX(id) from tb
[/Quote]

查不到我那个是 字符串的。
hokor 2010-07-26
  • 打赏
  • 举报
回复
select MAX(id) from tb

34,576

社区成员

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

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