mysql中如何排序非纯数字的字段 结合php排序

背景:需求就是这样突然就降临了,没错这次就是要把一个非纯数字的字段进行排序,假设字段“name”均如:tab_3,tab_8....这样的。我走了好多弯路,查了很多“古籍”。。。终于让我想到了解决方式,因此我还掌握了一门新招式,我才知道mysql居然也有字符截取,,,好了废话不多说了下面进入正题

首先直接上代码逻辑:

$arr = select text,name,substring(name,5,2) as new_name * from table_name;

这个语句关键在于substring(name,5,2) as new_name   把你需要排序的字段进行分隔获取到数字部分(给个小提示尽量as一个新名字,因为你页面展示的肯定还是没有截取过的值啊,不然领导会找你事儿的。。。我也不知道我表达清楚没)

本来吧我想写的还没写完想直接后面再加个 order by new_name desc;   但是。。。order by跟有病一样只排列了前几个数值后面就不对了所以我只能放弃了

继续结合php使用吧,不要慌我不会让你们用循环的多麻烦啊

$rows_arr = array_column($arr,'new_name');
array_multisort($rows_arr,SORT_ASC,$arr);

ok你再打印一下$arr数组我相信应该是你要的结果了。。。。end...

----------------------------------------------------------------------------手动分割线--------------------------------------------------------------------

既然都说起了sql的字符截取了,顺便就把其他的也记录一下吧:

1、从左开始截取字符串 

left(str, length) 

说明:left(被截取字段,截取长度) 

例:select left(content,200) as abstract from my_content_t 

 

2、从右开始截取字符串 

right(str, length) 

说明:right(被截取字段,截取长度) 

例:select right(content,200) as abstract from my_content_t 

 

3、截取字符串 

substring(str, pos) (推荐使用)

substring(str, pos, length) 

说明:substring(被截取字段,从第几位开始截取) 

substring(被截取字段,从第几位开始截取,截取长度) 

例:select substring(content,5) as abstract from my_content_t 

select substring(content,5,200) as abstract from my_content_t 

(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度) 

 

4、按关键字截取字符串 (这个我首先用了一下,反正我是报错,不知道各位仁兄会不会也出错

substring_index(str,delim,count) 

说明:substring_index(被截取字段,关键字,关键字出现的次数) 

例:select substring_index("blog.jb51.net","。",2) as abstract from my_content_t 

结果:blog.jb51 

(注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值