一、问题
获取Oracle数据库中一个varchar(或varchar2)类型的数值类字段的最大值,直接使用max方法取不到最大值。
二、原因
如果数据库的字段是varchar类型,他在比较大小的时候是按照阿斯克码表来比较的,简单来说,比较"9"和"20"的时候,先比较【9】和【2】,得出的结论是9大于2,然后就不比较了;直接得出结论9比2大;
所以,我们要先把varchar(或者varchar2)类型的字段先转换成数字,然后在用max()方法获取才对;
使用to_number方法,如:
max(to_number(A.age)) age
这样就能取到了。