首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含字母和数字的MySQL order by列

包含字母和数字的MySQL order by列
EN

Stack Overflow用户
提问于 2016-12-15 23:28:11
回答 2查看 84关注 0票数 1

我的表中有这一列,其中包含书架名称

代码语言:javascript
复制
M2-8-3
N1-12-1 
N1-3-8 
N2-6-1 
O1-11-3
O2-1-5 
O2-10-1 
O2-10-2 
O2-10-6 
O2-16-7 
O2-17-6 
O2-17-7 
O2-4-2

当我按它的升序排序时,它给出了上面可见的结果,但是我如何编写查询来获得下面可见的结果呢?

代码语言:javascript
复制
M2-8-3
N1-3-8 
N1-12-1 
N2-6-1 
O1-11-3
O2-1-5 
O2-4-2
O2-10-1 
O2-10-2 
O2-10-6 
O2-16-7 
O2-17-6 
O2-17-7 

区别在于N1-3-8O2-4-2的位置不同

EN

回答 2

Stack Overflow用户

发布于 2016-12-15 23:42:05

试试这个:

代码语言:javascript
复制
SELECT col
FROM yourTable
ORDER BY SUBSTRING_INDEX(col, '-', 1),
         SUBSTRING(SUBSTRING_INDEX(col, '-', -2),
                   1,
                   INSTR(SUBSTRING_INDEX(col, '-', -2), '-') - 1),
         SUBSTRING_INDEX(col, '-', -1)

这是一种强力方法,ORDER BY子句中的三个术语中的每一个都对应于用连字符连接的字符串的一部分。

票数 1
EN

Stack Overflow用户

发布于 2016-12-15 23:46:42

这可能是一种稍微简单一点的方法:

代码语言:javascript
复制
order by substring_index(col, '-', 1),
         substring_index(col, '-', -2) + 0,
         col

这最终将中间部分转换为用于排序的数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41167768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档