php - 排序 varchar 列 codeigniter

标签 php mysql codeigniter

我首先检查了是否有任何与我相同的问题,但我没有找到任何东西。 都是对混合了数字数据的字母数字列进行排序。

这是我的问题。 我有一个表,其中包含这样的 A 列数据。

WRG-01 WRG-39 WRG-22 WRG-45 WRG-43

需要将其排序为

WRG-01 WRG-22 WRG-39 WRG-43 WRG-45

这是我目前在 codeigniter 框架工作中使用的代码

$data['products'] = $this->db->order_by('product_id', 'asc')->get('products');

在 mysql 中我可以使用这个查询来完成我的工作

preg_replace("/[^\d]/", "",'product_id'), 'asc')

如何将其应用于我上面的 codeigniter 代码?

这里是搜索功能

public function search()
{
    $data['title'] = 'Search Product';
    $product_name       = $this->input->get('product_name');
    $product_id         = $this->input->get('product_id');
    $product_category   = $this->input->get('product_category');
    $secondCategory     = $this->input->get('secondCategory');
    $thirdCategory  = $this->input->get('thirdCategory');

$data['category'] = $this->db->order_by('id', 'asc')->get_where('categories', ['parent' => 0]);
if($product_category != '')
{
    $data['secondCategory'] = $this->db->get_where('categories', ['parent' => $product_category]);
}
if($secondCategory != '')
{
    $data['thirdCategory'] = $this->db->get_where('categories', ['parent' => $secondCategory]);
}


if($product_name != '')
    {
        $this->db->like('product_name', $product_name);
    }
    if($product_id != '')
    {
        $this->db->where('product_id', $product_id);
    }
    if($product_category != '')
    {
        $this->db->where('product_category', $product_category);
    }
    if($secondCategory != '')
    {
        $this->db->where('secondCategory', $secondCategory);
    }
    if($thirdCategory != '')
    {
        $this->db->where('thirdCategory', $thirdCategory);
    }



    $data['products'] = $this->db->order_by('product_id' 'asc')->get('products');


    theme('all_product', $data);

}

我不能在这里使用 sql 查询,因为产品是产品表中的结果数组。

最佳答案

使用 MySQL cast

cast(product_id as SIGNED)

cast(product_id as UNSIGNED)

尝试这样的查询:-

select * from products cast(product_id as UNSIGNED) ASC|DESC

关于php - 排序 varchar 列 codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429579/

相关文章:

PHP 将 mysql 转换为 mysqli

php - 对获取的数据求和

mysql - 计算每日平均值(或 : how many Mondays are in a date range? )

php - 如何在codeigniter/PHP中设置重置密码链接?

php - 从 FS 流式传输图片还是从 BLOB 流式传输图片更快?

php - 如何从 array_intersect() 获得区分大小写的返回值

php - 我如何在查询中写入不大于

php - 使用mysql数据库中的类别名称填充选择下拉菜单

javascript - Mapbox 行车路线

php - 如何在 Codeigniter 中弹出验证表单的消息?