【发布时间】:2009-11-17 21:08:42
【问题描述】:
我在 mysql 表上有一个列,该列主要存储数值,但有时存储字符串。它被定义为 VARCHAR(20)。此列有前四个字符的索引。
ADD INDEX `refNumber` USING BTREE(`refNumber`(4));
由于该字段主要是数字,因此用户能够查询数字范围内的值(例如,100 到 2000)非常有用。如果我使用数字比较,则不使用此索引。
WHERE refNumber BETWEEN 100 AND 2000
如果我使用字符串比较,我会得到一些我不想要的值(例如,在查询 100 到 2000 的范围时返回 10000)。
WHERE refNumber BETWEEN '100' AND '2000'
有什么好的解决办法吗?
注意:有些值是记录在前面补零的,比如 0234,在查找 100 到 2000 之间的值时应该返回。
【问题讨论】: