首页 教程 正文
  • 本文约485字,阅读需2分钟
  • 1130
  • 22

ThinkPHP5 Mysql Varchar字符串排序

温馨提示:本文最后更新于2022年5月25日 18:50,若内容或图片失效,请在下方留言或联系博主。

1.实现

ThinkPHP5 Mysql Varchar字符串排序
百度各种搜索最终三个方法:
ORDER BY name+0 desc
ORDER BY CAST(name as SIGNED) desc
ORDER BY CONVERT(name as SIGNED) desc

但是经过实践不知道为什么排序出来的结果只有倒序,没有正续

2.另一个

经过Google后。。
第二个实现方法:
ORDER BY LPAD(LOWER(name), 10,0) DESC

原文地址:https://stackoverflow.com/questions/4686849/sorting-varchar-field-numerically-in-mysql

3. PHP

$order2 = "$order $desc";
if(in_array($order, ['name', 'ip']))
{
    $order2 = "LPAD(LOWER($order), 10,0) $desc";
}

Db::name('xxxx')->orderRaw($order2)->paginate(50, false,['query'=>request()->param()])
评论