一、问题
获取Oracle数据库中一个varchar(或varchar2)类型的数值类字段的最大值,为什么获取不到?例如下图,age字段是varchar(或varchar2)类型的,但是里面存储的值是数值类型的;即字符串类型的数字,例如【“9”】;面临这种类似的情况,我们获取最大值如果只用max获取时,为什么拿不到最大值?
实际获取:
二、分析
因为,如果数据库的字段是varchar类型,他在比较大小的时候是按照阿斯克码表来比较的,简单来说,比较"9"和"20"的时候,先比较【9】和【2】,得出的结论是9大于2,然后就不比较了;直接得出结论9比2大;
所以,我们要先把varchar(或者varchar2)类型的字段先转换成数字,然后在用max()方法获取才对;