Mysql实现字符位数及字符大小升序排序

Mysql实现字符位数及字符大小升序排序

当我们需要对某一字段进行升序排序的时候,如果这个字段是字符类型的数据,排序时会去逐位比较字符,例如:
'1234’和’21’两个字符串,按照惯性思维,肯定是’21’排在前面,但是由于字符类型数据比较时会逐位比较,所以,应当是‘1234’排在前面。那么,怎么才能让‘21’排在前面呢?

有两种实现方式:
一、先进行位数排序,再进行字符排序:

select dict_no, dict_name from dictionary order by length(dict_no), dict_no asc; 

多个排序条件,会按照第一个排序排序条件为基准排序,即先按照dict_no的长度进行排序,当dict_no长度一致的时候,会按照第二个排序条件进行排序,即字符。

二、将dict_no转化为数字类型,再进行排序:

select dict_no, dict_name from dictionary order by cast(dict_no as decimal) asc;

这种方式适用于纯数字字符串。当字符串为‘21abd’和’21ab’时,这种排序方式便失去了作用,无法对这两个字符进行比较,因为转化成数字后都是21。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值