这个是一个csdn上有人问的一个题目,具体的题目如下:
数据库表 表1
id name
1 DB-235-aa-fc
2 DB-275-ag-fw
3 DB-235-ajj-fj
4 DB-4444444-ss-fq
5 DB-2222-kkk-fh
6 DB-997-ii-fw
. .
. .
里面几千,几万条
在数据库中写查询语句,查询name字段,第一个‘-’和第二个‘-’之间的最大的那个数!
也就是把第4条数据查询出来!
这里给出了两种解法:(1)是利用游标(在利用游标之前,会先过滤一下数据集,让数据集的记录变小,这样可以大大的缩小游标所花的时间)具体的Sql代码如下:
create table #t
(
id int not null identity(1,1) primary key,
name varchar(100) not null
)
insert #t(name)
values
('DB-235-aa-fc'),
('DB-275-ag-fw'),
('DB-235-ajj-fj'),
('DB-4444444-ss-fq'),
('DB-2222-kkk-fh'),
('DB-997-ii-fw')
--下面的select就是缩小了结果集
select *
into #lists