sqlite3 - MAX()函数不返回列的最大值

时间:2017-11-01 15:49:02

标签: sql sqlite max

在以下格式的表格上操作:

name                      size        solution_length  solution_forks  backtravel_parallel  backtravel_perp  forks_to_dead  dead_overlap  weighted_dead_length
------------------------  ----------  ---------------  --------------  -------------------  ---------------  -------------  ------------  --------------------
AldousBroder_5_33342.txt  5           14               4               0                    0                4              26            444
AldousBroder_5_05916.txt  5           28               4               4                    0                4              28            728

这就是我获取列的最大值的方式。

sqlite> SELECT MAX(weighted_dead_length) FROM mazes_100k;

MAX(weighted_dead_length)
-------------------------
996

然而,它似乎并不是真正的最大值:

sqlite> SELECT COUNT(*) FROM mazes_100k WHERE weighted_dead_length = 1000;

COUNT(*)
----------
15

为什么如果我尝试使用列更高的值计算行数而不是MAX()返回的行数,我还会得到一些命中?好像MAX()不会返回列的真实最大值。

通过试用错误,使用COUNT(),似乎真正的最大值是1004 - 我怎样才能让MAX()返回?

谢谢!

1 个答案:

答案 0 :(得分:3)

您将值存储为字符串而不是数字。将值转换为max:

的数字
SELECT MAX(weighted_dead_length + 0)
FROM mazes_100k;

或:

SELECT MAX(CASt(weighted_dead_length as INTEGER) )
FROM mazes_100k;