gpt4 book ai didi

php - 查找两个 varchar 字段的最大数值

转载 作者:行者123 更新时间:2023-11-30 23:32:16 24 4
gpt4 key购买 nike

我试图找到包含在我的表的两个单独字段中的最大值。

我在模型中使用的代码是:

$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?

如果是这样,有没有办法在检查最大值之前将字段内容转换为整数,这会受到字段中非整数值的影响吗?

我们非常感谢您提供的所有帮助和建议。

托尼。

最佳答案

这可以通过使用 MySQL 的隐式类型转换的 SQL 来完成:

select max(case when (field1+0)>(field2+0) then field1+0 else field2+0 end)
from default_table1

使用 +0 会将 varchar 转换为数字,并忽略数字后面的任何字符。如果你还需要原来的内容,你可以这样写查询:

select case when (field1+0)>(field2+0) then field1 else field2 end
from default_table1
order by case when (field1+0)>(field2+0) then field1+0 else field2+0 end desc
limit 1

关于php - 查找两个 varchar 字段的最大数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com