У меня есть столбец в таблице MySQL, который хранит в основном числовые значения, но иногда строки. Он определяется как VARCHAR (20). В этом столбце есть индекс для первых четырех символов.
ADD INDEX `refNumber` USING BTREE(`refNumber`(4));
Поскольку поле в основном числовое, для пользователя полезно иметь возможность запрашивать значения, попадающие в числовой диапазон (например, от 100 до 2000). Если я использую числовое сравнение, этот индекс не используется.
WHERE refNumber BETWEEN 100 AND 2000
Если я использую сравнение строк, я получаю некоторые значения, которые мне не нужны (например, 10000 возвращается при запросе в диапазоне от 100 до 2000).
WHERE refNumber BETWEEN '100' AND '2000'
Есть ли хорошее решение для этого?
Примечание. Некоторые значения записываются с нулями на передней панели, например 0234, и должны возвращаться при поиске значений от 100 до 2000.