SQL max函数没有为
提供正确的结果select max (liri_appid) from idea_interface;
结果是:90802,但我知道它的最大值为15454545
我运行order by子句时面临着同样的问题。结果即将发布
1
13
2
23
4
5
6
69
777
9
不确定为什么。
答案 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,...
将字段类型更改为数字类型的字段。