如果想要对值的子串进行排序(不管是字符串还是数值)都可以使用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(工资));
- 欧拉|欧拉操作系统:华为“铸魂”工程,产业深度解析
- 麒麟990|鸿蒙系统+麒麟990芯+徕卡四摄,二手旗舰现货重回低价!
- 自媒体|推荐2个小白能做的副业,一台电脑即可,单人可干!
- 一加科技|趁五一假期想换个手机专门玩游戏,顺带拍拍照片有什么推荐?
- 操作系统|国产操作系统做皮囊的能力超过美国公司
- 一加科技|比红米K50贵了100元,为什么懂行人更推荐一加ACE,差哪了?
- 华为鸿蒙系统|鸿蒙系统+40W快充+麒麟芯片,跌至1399元,超高颜值华为手机
- 扫雷|30年历史的小神作《扫雷》为何系统不再自带,原因让微软直呼头疼
- 电池|有颜值有性价比,八款2022年2500元左右手机推荐
- Windows|电脑重装系统后,如何显示Windows10桌面图标?