我有一个查询寻找最大值,但显示不符合预期
我只是为了在此列中获得最大值。我使用查询“ SELECT max(substr(no_box,3)) as maxnb FROMtbl_pengecekan”但显示值为 9
期望值为 10
请帮我
您需要将 substr(no_box,3) 转换为 int 然后应用 max
select max(cast(substr(no_box,3) as signed)) from tablename
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;
您获得了该值9,因为这是您查询的集合中的词典最大值。如果要获得数值最大值,则必须首先将值转换为整数(基本上从 转换string为int)。你可以这样做cast(substr(no_box, 3) as signed)
完整代码
SELECT
max(cast(substr(no_box, 3) as signed)) as maxnb
FROM tbl_pengecekan