日期:2014-05-18  浏览次数:20433 次

sql 最大值的问题!
select max(Numbetr) from Information ;Numbetr为字符串类型,数据库有2条记录,分别2012年第99号,2012年第100号,查询出来的最大值是2012年第99号最大,这个查询应该怎么写啊

------解决方案--------------------
SQL code

select max(convert(int,Numbetr)) from Information

------解决方案--------------------
SQL code
select * from information t where number=(select max(number) from tb where id=t.id)

------解决方案--------------------
你把你的表的所有字段拿出来看看,如果有一个能确定排序的列,那可以用row_number()over()来实现。
------解决方案--------------------
按一般规则来比较排序的话 是从第一位开始比较,相同就继续下一位比较

99和100首先比较的是第一位 那就是9和1 确定9>1 所以99大于100 

所以在字符串比较的时候 先要转成int类型.
------解决方案--------------------
SQL code

create table Information
(Numbetr varchar(30))

insert into Information
select '2012年第99号' union all
select '2012年第100号'


select top 1 Numbetr
from Information 
order by 
cast(substring(Numbetr,
charindex('第',Numbetr)+1,
charindex('号',Numbetr)-charindex('第',Numbetr)-1)
as int) desc

Numbetr
------------------------------
2012年第100号

(1 row(s) affected)