0

我有一个查询寻找最大值,但显示不符合预期

这是我在表格中的数据 在此处输入图像描述

我只是为了在此列中获得最大值。我使用查询“ SELECT max(substr(no_box,3)) as maxnb FROMtbl_pengecekan”但显示值为 9

在此处输入图像描述

期望值为 10

请帮我

4

3 回答 3

5

您需要将 substr(no_box,3) 转换为 int 然后应用 max

演示

select max(cast(substr(no_box,3) as signed)) from tablename
于 2018-10-01T08:47:17.603 回答
2

A-您也可以通过从字符串中删除来获取最大值。

询问

select max(`t`.`num`) as `maxnb` from (
    select cast(replace(`no_box`, 'A-', '') as signed) as `num`
   from `tbl_pengecekan`
) as `t`;

另一种方法是,首先按长度的降序排列列,然后再按列本身的降序排列。然后将结果限制为 1。

询问

select replace(`no_box`, 'A-', '') as `maxnb`
from `tbl_pengecekan`
order by length(`no_box`) desc, `no_box` desc limit 1;

在此处查找演示

于 2018-10-01T09:06:38.680 回答
1

您获得了该值9,因为这是您查询的集合中的词典最大值。如果要获得数值最大值,则必须首先值转换为整数(基本上从 转换stringint)。你可以这样做cast(substr(no_box, 3) as signed)

完整代码

SELECT 
    max(cast(substr(no_box, 3) as signed)) as maxnb 
FROM tbl_pengecekan
于 2018-10-01T08:51:31.633 回答