select substr(ID,1,8) as TIME,MAX(to_number(IN_NUMBER)) as MAXRTNUMOFDAY from
"peopletickettest" where ID >= #{starttime} and ID <=#{endtime}
group by substr(ID,1,8)
以上是想按照“天”来分组统计,每一天中最大的IN_NUMBER(varchar)值;
在运行SQL的时候,查表发现最大值应该是13145,但是经过上面SQL跑出来的结果是986
为什么呢?
经过检查发现,IN_NUMBER(varchar)中有一个值是这样的形式:“13,145”
问题就在这里
“13,145”作为varchar型,to_number的时候无法正常转换,所以导致IN_NUMBER字段还是varchar型,varchar型做大小比较的时候,9开头的986就最大了
调整之后的SQL:
select substr(ID,1,8) as TIME,MAX(to_number(regexp_replace(IN_NUMBER,',',''))) as MAXRTNUMOFDAY from
"peopletickettest" where ID >= #{starttime} and ID <=#{endtime}
group by substr(ID,1,8)
使用一个:regexp_replace 去除,
结果正确。。。