当我使用此查询时:
SELECT count(*) FROM verdicts WHERE Age BETWEEN 10 AND 20
我得到17行。但是当我使用这个查询时:
SELECT count(*) FROM verdicts WHERE Age BETWEEN 7 AND 20
我得到0行。我知道第二个查询应该捕获其他行。第二个查询应该捕获第一个查询捕获的所有行。有谁知道会发生什么?
age列包含几乎所有的ints,除了几个文本值,例如:
0-10,10-20等
这可能是我的问题吗?
答案 0 :(得分:2)
我怀疑Age
存储为字符串。这是一件糟糕的坏事。所以,你的比较真的是:
where Age between '7' and '20'
因为'7'大于'20',between
不返回任何内容(较小的值首先出现)。
基本上,你可以用你的数据做很多事情。你应该真正修复数据格式。以下是可能性:
Age
存储为数字。'007'
而不是'7'
。如果你做了最后一次,那么这将有效:
where Age between '007' and '028'