如何从Codeigniter中的varchar字段获取整数值的max()?

时间:2019-01-15 05:33:50

标签: php mysql codeigniter

rf_id  rf_name  
12      12
13      13
14      14
15      15
16      GF
17      BASE

我想从Codeigniter的rf_name列中获取 15 。每次我应该得到max('rf_name')不允许输入字符的地方

2 个答案:

答案 0 :(得分:0)

下面的MySql查询:

SELECT Max(CAST(rf_name as SIGNED)) as MAX_INT FROM table_name;

在Codeigniter中:

$sql = "SELECT Max(CAST(rf_name as SIGNED)) as MAX_INT FROM table_name"; 
$this->db->query($sql);

答案 1 :(得分:0)

首先,确保列rf_name的数据类型应为整数/浮点数,而不是varchar / string / text等。

因此,根据列的数据类型,它将不存储任何字符串值

$maxid = $this->db->query('SELECT MAX(rf_name) AS maxid FROM table')->row()->maxid;

OR

$this->db->select_max('rf_name');
$query = $this->db->get('table');

如果同时具有字符串和数字值,则必须执行以下步骤

  1. 获取列的所有值

    $this->db->select('rf_name');
    $this-db->from('table');
    $values = $this->db->get('table')->result_array(); 
    
  2. 仅从数组中获取值

    $only_values= array();
    foreach($values as $value){
       if (is_numeric($value['rf_name'])) {
          array_push($only_values, $value['rf_name']);
       }
    }
    
  3. 使用max()并传递值数组以从中获取最大数值。

    $max_value = max($only_values);