SQL Max函数未返回正确的最大值

时间:2018-10-15 07:03:56

标签: sql oracle

SQL max函数没有为

提供正确的结果
select max (liri_appid) from idea_interface; 

结果是:90802,但我知道它的最大值为15454545

我运行order by子句时面临着同样的问题。结果即将发布

 1
 13
 2
 23
 4
 5
 6
 69
 777
 9

不确定为什么。

2 个答案:

答案 0 :(得分:6)

  

LIRI_APPID VARCHAR2(20 BYTE)

liri_appid被定义为varchar2。这意味着它使用字符串语义。 9的ASCII值高于1的ASCII值,因此'90802'大于'15454545'

出于相同的原因,'13'低于'2',因此您的订购单数很奇怪。

解决方法是

 select max (to_number( (liri_appid))
 from idea_interface;

order by to_number( (liri_appid) asc

正确的解决方案是更改数据模型,因此将liri_appid定义为数字。使用正确的数据类型始终是最好的策略。

答案 1 :(得分:2)

您的字段类型绝对是Text类型,它按如下所示的ASCII代码值对它们进行排序:

  

1,12,13,13,2,20,21,...

将字段类型更改为数字类型的字段。