首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分拣字母+字符+数字?

分拣字母+字符+数字?
EN

Stack Overflow用户
提问于 2018-12-29 08:17:57
回答 7查看 124关注 0票数 1

我有一个列名session,其中存储会话的方式如下

代码语言:javascript
复制
fall-2018
fall-2019
spring-2019
spring-2020

我想按这样的升序排序:

代码语言:javascript
复制
Fall-2018
Spring-2019
Fall-2019
Spring-2020

我尝试过的查询:

代码语言:javascript
复制
SELECT * 
FROM student 
ORDER BY session +0 ASC

请建议!

注意:还有五列,我必须选择全部,然后按会话排序。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-12-29 11:55:12

您可以先按年份(最后4个字符)订购,然后按季节顺序订购,如下所示:

代码语言:javascript
复制
select   session
from     students
order by right(session, 4),
         session desc;

session (即季节)是按顺序下降的,因为在任何一年中,春季都是在秋季之前到来的。

票数 0
EN

Stack Overflow用户

发布于 2018-12-29 08:54:05

编辑:好的,然后在MS中

代码语言:javascript
复制
with student as
(
   select 'fall-2018' as "session" union all
   select 'spring-2018' union all
   select 'fall-2019' union all
   select 'spring-2019' union all
   select 'fall-1980' union all
   select 'spring-2055' union all
   select 'fall-2052'
)
select
   s."session"
from student s
order by right(s."session", 4), s."session"

在Oracle中,这个字符串可以这样排序

代码语言:javascript
复制
with student as
(
   select 'fall-2018' as "session" from dual union all
   select 'spring-2018' from dual union all
   select 'fall-2019' from dual union all
   select 'spring-2019' from dual
)
select
   initcap(s."session")
from student s
order by substr(s."session", -4), s."session"
票数 0
EN

Stack Overflow用户

发布于 2018-12-29 08:54:24

您可以拆分年份部分,并使用它按进行排序。

代码语言:javascript
复制
SELECT Session
FROM student 
order by PARSENAME(Replace(Session,'-','.'), 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53967881

复制
相关文章

相似问题

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