我正在尝试从oracle数据库中的表student的列id中找到最大值。下面给出的查询工作正常,直到id <= 9。 例如 表数据
id
--
3
6
9
10
sql> select id from (select * from Student order by id desc)Student where rownum<=1 order by id desc;
id
--
9
但是虽然记录中存在id = 10但它仍然给我id = 9作为最大值。 例如 表数据
composer update
请帮忙。
答案 0 :(得分:3)
您无法获得最大值的原因很简单。您的id
列可能不是number
类型,而是char
类型。如果order by
oracle对char
进行不同的输入,则'10'
的第一个字符'1'
与'9'
的第一个字符'9'
进行比较{ {1}}所以'9'
仍然是最大值。
要解决此问题,您应该确保id
是号码:
select id
from (select * from Student order by TO_NUMBER(id) desc)Student
where rownum<=1 order by TO_NUMBER(id) desc;
但您也可以使用此查询:
select max(TO_NUMBER(id)) from student;