Mysql从表中选择max不能给出准确的结果

时间:2015-12-31 11:21:09

标签: php mysql

我的表中有以下值:JC-1-1 , JC-1-2 , JC-1-3, JC-1-4,JC-1-5,JC-1-6,JC-1-7,JC-1-8,JC-1-9,JC-1-10,JC-1-11,JC-1-12,JC-1-15。 当我尝试使用mysql MAX函数选择值时,如下所示:

SELECT MAX(job_card_no) AS max_job_card FROM `job_card`

我得到的值为:     JC-1-9代替JC-1-15。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

试试这个:

SELECT MAX(CONVERT(SUBSTRING_INDEX(job_card_no,'-',-1),UNSIGNED INTEGER)) AS max_job_card FROM `job_card`;

希望它能起作用:)。

答案 1 :(得分:0)

您可以尝试SUBSTRING( string, start_position, [ length ] )获取结果:

SELECT MAX(SUBSTRING(job_card_no, 6, 2)) AS max_job_card FROM `job_card`

mysql中的SUBSTRING有三个参数。

  • 您的字段名称(您的字段名称)

  • 起点(您要开始的地方)

  • 长度(你想要多少个角色)

答案 2 :(得分:0)

这可能不是标准答案,但可以提供所需的输出!!

您无法获得正确的输出,因为查询无法为字符串赋予最大值。 解决方案是==> 1)执行查询以获取所有job_card_no

SELECT job_card_no FROM `job_card`

2)现在,使用forelo的implode()然后对该特定数组使用max()函数

$arr = array('JC-1-1' ,  'JC-1-2' , 'JC-1-3', 'JC-1-4','JC-1-5','JC-1-6','JC-1-7','JC-1-8','JC-1-9','JC-1-10','JC-1-11','JC-1-12','JC-1-15');