我试图找到包含在我的表的两个单独字段中的最大值。查找两个varchar字段的最大数值
我用在我的模型代码是:
$query = $this->db->query("select max($field1) as max_id_1 from default_table1");
$row1 = $query->row_array();
$query = $this->db->query("select max($field2) as max_id_2 from default_table1");
$row2 = $query->row_array();
return max($row1['max_id_1'], $row2['max_id_2']);
我一个完整的新手,其中PHP和CodeIgniter的关注 - 因为我相信我的代码演示了:)
它正在工作,因为它是返回值,但不是我在字段中的最大值。例如,我知道有一个4000的值,但返回的最高是750.
我想知道这是否是因为字段的类型为VARCHAR,因为虽然他们主要包含数字有一些包含字符( - 或& )或单词'to',所以我不能使用INT类型。 由于使用VARCHAR,它没有看到4000大于750?
如果是的话,是否有办法在检查最大值之前将字段内容转换为整数,并且这会受到字段中非整数值的影响?
感谢您提供所有的帮助和建议。
Tony。
感谢@米兰。它正在工作 - 当然比我想出的代码更好 - 但是如果比较是在数字和空值之间(例如$ field1 = 4000,$ field2 = NULL),它似乎没有取得最大值。这是预期的吗?任何想法如何克服这一点?再次感谢你的帮助。 – tcarnell 2012-03-31 10:33:16
当然,使用COALESCE。而不是field1和field2使用COALESCE(field1,0)和COALESCE(field2,0) – 2012-03-31 21:14:27
Superb @milan。这工作出色:)非常感谢您的帮助,非常感谢。 – tcarnell 2012-04-01 10:27:59