如果列是文本和数字,我如何从列值大于某个值的mysql表中选择

时间:2019-02-19 17:48:04

标签: php mysql

我有一个名为“ products”的表,其中一列为“ SerialNumber”。问题在于此列为文本latin1_swedish_ci,其值类似于“ BC00001,BC0002等”。我需要选择序列号大于某个给定序列号的所有产品。 我试过这样选择:

SELECT * FROM 'products' WHERE 'SerialNumber' >= 'BC00563' 

但是由于此列是文本,因此无法正常工作。 我无法修改表结构,因为此表已经有20.000条记录。 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

假设值始终是两个字符后跟数字,则可以去除字符并将其余值转换为number以进行比较,例如:

SELECT * 
FROM `products` 
WHERE `SerialNumber` >= 
    CASE WHEN 'BC00563' regexp '[A-Z]' THEN 
    CONVERT(SUBSTRING("BC00563", 3, LENGTH("BC00563")), UNSIGNED) 
    ELSE 'BC00563' END;

您可以使用列名代替常量值。