mysql – 如何选择混合字符串/ int列的最大值?

假设我有一个表,其中包含发票号的列,数据类型为VARCHAR,其中包含混合的字符串/ int值,如:

invoice_number
**************
    HKL1
    HKL2
    HKL3
    .....
    HKL12
    HKL13
    HKL14
    HKL15

我试图选择它的最大值,但它返回“HKL9”,而不是最高值“HKL15”.

SELECT MAX( invoice_number )
FROM `invoice_header`

解决方法:

HKL9(字符串)大于HKL15,因为它们被比作字符串.解决问题的一种方法是定义一个只返回发票号的数字部分的列函数.

如果您的所有发票编号都以HKL开头,那么您可以使用:

SELECT MAX(CAST(SUBSTRING(invoice_number, 4, length(invoice_number)-3) AS UNSIGNED)) FROM table

它接受invoice_number,不包括3个第一个字符,转换为int,并从中选择max.

上一篇:mysql主从复制模式


下一篇:php调用回调与闭包