
如果想要对值的子串进行排序(不管是字符串还是数值)都可以使用SUBSTR函数
要求1:想要获得最后两位的字母进行排序mysql> select * from test_db;+--------+------+------+------+| 英文名 | 姓名 | 年龄 | 工资 |+--------+------+------+------+| kell | 小明 | 22 | 3800 || olee | 小网 | 21 | 7774 || sake | 小红 | 25 | 2226 || deoq | 小省 | 27 | 6666 |+--------+------+------+------+
想要的结果按照英文名的后两位进行排序
+--------+------+------+------+| 英文名 | 姓名 | 年龄 | 工资 |+--------+------+------+------+| olee | 小网 | 21 | 7774 || sake | 小红 | 25 | 2226 || kell | 小明 | 22 | 3800 || deoq | 小省 | 27 | 6666 |+--------+------+------+------+
可以使用SUBSTR函数(截取字符串第一个参数是字符串第二个参数是起始位置)因为MySQL中和其他语言不一样的就是时从1开始算而其他语言则是从0开始算第一位下标所以其他语言的起始位置-1为最后一位而MySQL不减就是最后一位.
【推荐系统|MySQL中如果对子串进行排序? 字符串和数值如何使用order by语句?】下面这段代码也就是按照字符串最后2个字母进行排序
mysql> select substr(英文名length(英文名)-1) from test_db;+---------------------------------+| substr(英文名length(英文名)-1) |+---------------------------------+| ll || ee || ke || oq |+---------------------------------+4 rows in set (0.00 sec)
select 英文名姓名年龄工资 from test_db order by substr(英文名length(英文名)-1);
要求2:按照工资的最后1位进行排序同样的数值也可以使用(其他语言如js中不可直接对数值类型使用)
+--------+------+------+------+| 英文名 | 姓名 | 年龄 | 工资 |+--------+------+------+------+| kell | 小明 | 22 | 3800 || olee | 小网 | 21 | 7774 || sake | 小红 | 25 | 2226 || deoq | 小省 | 27 | 6666 |+--------+------+------+------+
select 英文名姓名年龄工资 from test_db order by substr(工资length(工资));
- iPhone14|准大学生的数码装备推荐
- Flyme|“国产系统之光”Flyme迎来十周年,纪念海报上线引发热议
- ColorOS|绿厂又在憋大招?新系统和新产品接踵而至
- 华为鸿蒙系统|鸿蒙3.0即将推送,Mate 50首发
- 新书推荐 │ 大数据算法设计与分析
- 苹果|外观抄苹果、系统用华为?玩了这台乐视“山寨机”我又窒息了
- 小米Civi,推荐给喜欢高颜值外观的自拍达人
- 腾讯|推荐6款免费软件,上班族最好放在电脑里
- 华为|长安华为打造, 鸿蒙系统加持!阿维塔11正式官宣,3.98秒破百!
- 华为鸿蒙系统|意欲何为?国内两大科技巨头弃用华为鸿蒙,自研新系统
