首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql自定义排序首先使用字母,然后使用大小写

问mysql自定义排序首先使用字母,然后使用大小写
EN

Stack Overflow用户
提问于 2010-06-04 04:51:29
回答 1查看 1.1K关注 0票数 4

如何在REGEXP时使用ORDER BY CASE对查询进行排序?或其他替代方案?我不想使用联合。谢谢

代码语言:javascript
复制
mysql> SELECT `floor_id`, `floor_number` FROM `floors`;
+----------+--------------+
| floor_id | floor_number |
+----------+--------------+
|        1 | 4            |
|        2 | 7            |
|        3 | G            |
|        4 | 19           |
|        5 | B            |
|        6 | 3            |
|        7 | A            |
+----------+--------------+


Expected result:
+----------+--------------+
| floor_id | floor_number |
+----------+--------------+
|        7 | A            |
|        5 | B            |
|        3 | G            |
|        6 | 3            |
|        1 | 4            |
|        2 | 7            |
|        4 | 19           |
+----------+--------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-04 06:07:42

您对REGEXP的使用非常接近。这应该是可行的:

代码语言:javascript
复制
SELECT floor_id, floor_number FROM floors ORDER BY CASE
WHEN floor_number REGEXP '[a-zA-Z]' THEN 0
ELSE 0+floor_number END ASC, floor_number;

CASE语句将字母楼层排序为0,并使用0+将数字楼层强制转换为可以排序的数字值。然后需要按floor_number进行第二级排序,以便字母楼层正确地排序为A、B、G。如果没有第二级顺序,字母楼层都将被视为等同于值0,并且不会以定义的顺序出现。

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

https://stackoverflow.com/questions/2969678

复制
相关文章

相似问题

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