MySQL select 文本列范围之间的行

MySQL select rows between a range on a text column

我有一个名为 basicinfo 的 table 和一个名为 iepNo 的列,它具有基于特定格式的值,例如

m-195001
m-195002
m-195003 and so on. 

我想根据给定的iepNo 范围获取记录。例如我想在 m-233m-334

之间获取 iepNo

截至目前,我正在使用此查询:

SELECT * 
FROM basicinfo 
WHERE iepNo BETWEEN "M-100" AND "M-200" 

但它返回 2631 行,但实际上,我应该只得到 m-100m-200 之间的 100 行。列 iepNo 的类型为 varchar(13).

请指导我如何解决这个问题。

您可以在比较之前提取 ID 值并转换为整数:

SELECT * 
FROM basicinfo 
WHERE CAST(SUBSTRING_INDEX(iepNo, '-', -1) AS UNSIGNED) BETWEEN 100 AND 200;